From a1e20f4c9a597ce6aac4a3adc2c6b6088bced703 Mon Sep 17 00:00:00 2001 From: amitm02 Date: Tue, 2 Oct 2018 16:02:28 +0300 Subject: [PATCH] handle templates with no headers or foolters --- src/import-dotx/import-dotx.ts | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/src/import-dotx/import-dotx.ts b/src/import-dotx/import-dotx.ts index 940ecd2f10..93c9ab97ff 100644 --- a/src/import-dotx/import-dotx.ts +++ b/src/import-dotx/import-dotx.ts @@ -135,12 +135,21 @@ export class ImportDotx { } public extractDocumentRefs(xmlData: string): IDocumentRefs { + interface IAttributedXML { + _attr: object; + } const xmlObj = fastXmlParser.parse(xmlData, importParseOptions); const sectionProp = xmlObj["w:document"]["w:body"]["w:sectPr"]; - const headersXmlArray = Array.isArray(sectionProp["w:headerReference"]) - ? sectionProp["w:headerReference"] - : [sectionProp["w:headerReference"]]; + const headerProps: undefined | IAttributedXML | IAttributedXML[] = sectionProp["w:headerReference"]; + let headersXmlArray: IAttributedXML[]; + if (headerProps === undefined) { + headersXmlArray = []; + } else if (Array.isArray(headerProps)) { + headersXmlArray = headerProps; + } else { + headersXmlArray = [headerProps]; + } const headers = headersXmlArray.map((item) => { return { type: item._attr["w:type"], @@ -148,9 +157,16 @@ export class ImportDotx { }; }); - const footersXmlArray = Array.isArray(sectionProp["w:footerReference"]) - ? sectionProp["w:footerReference"] - : [sectionProp["w:footerReference"]]; + const footerProps: undefined | IAttributedXML | IAttributedXML[] = sectionProp["w:footerReference"]; + let footersXmlArray: IAttributedXML[]; + if (footerProps === undefined) { + footersXmlArray = []; + } else if (Array.isArray(footerProps)) { + footersXmlArray = footerProps; + } else { + footersXmlArray = [footerProps]; + } + const footers = footersXmlArray.map((item) => { return { type: item._attr["w:type"],