docxtemplater/es6/collect-content-types.js
2021-09-04 10:15:02 +05:00

29 lines
871 B
JavaScript

const ctXML = "[Content_Types].xml";
function collectContentTypes(overrides, defaults, zip) {
const partNames = {};
for (let i = 0, len = overrides.length; i < len; i++) {
const override = overrides[i];
const contentType = override.getAttribute("ContentType");
const partName = override.getAttribute("PartName").substr(1);
partNames[partName] = contentType;
}
for (let i = 0, len = defaults.length; i < len; i++) {
const def = defaults[i];
const contentType = def.getAttribute("ContentType");
const extension = def.getAttribute("Extension");
// eslint-disable-next-line no-loop-func
zip.file(/./).map(({ name }) => {
if (
name.slice(name.length - extension.length - 1) === ".xml" &&
!partNames[name] &&
name !== ctXML
) {
partNames[name] = contentType;
}
});
}
return partNames;
}
module.exports = collectContentTypes;