UNPKG

docxtemplater

Version:

docx and pptx generator working with templates and data (like Mustache, for Word and Powerpoint documents)

89 lines (81 loc) 2.95 kB
"use strict"; var loopModule = require("./modules/loop.js"); var spacePreserveModule = require("./modules/space-preserve.js"); var rawXmlModule = require("./modules/rawxml.js"); var expandPairTrait = require("./modules/expand-pair-trait.js"); var render = require("./modules/render.js"); function PptXFileTypeConfig() { return { getTemplatedFiles: function getTemplatedFiles(zip) { var slideTemplates = zip.file(/ppt\/(slideMasters)\/(slideMaster)\d+\.xml/).map(function (file) { return file.name; }); return slideTemplates.concat(["ppt/presentation.xml", "docProps/app.xml", "docProps/core.xml"]); }, textPath: function textPath() { return "ppt/slides/slide1.xml"; }, tagsXmlTextArray: ["Company", "HyperlinkBase", "Manager", "cp:category", "cp:keywords", "dc:creator", "dc:description", "dc:subject", "dc:title", "a:t", "m:t", "vt:lpstr"], tagsXmlLexedArray: ["p:sp", "a:tc", "a:tr", "a:table", "a:p", "a:r", "a:rPr", "p:txBody", "a:txBody", "a:off", "a:ext", "p:graphicFrame", "p:xfrm", "a16:rowId"], expandTags: [{ contains: "a:tc", expand: "a:tr" }], onParagraphLoop: [{ contains: "a:p", expand: "a:p", onlyTextInTag: true }], tagRawXml: "p:sp", baseModules: [loopModule, expandPairTrait, rawXmlModule, render], tagShouldContain: [{ tag: "p:txBody", shouldContain: ["a:p"], value: "<a:p></a:p>" }, { tag: "a:txBody", shouldContain: ["a:p"], value: "<a:p></a:p>" }] }; } function DocXFileTypeConfig() { return { getTemplatedFiles: function getTemplatedFiles(zip) { var baseTags = ["docProps/core.xml", "docProps/app.xml", "word/settings.xml"]; var headerFooters = zip.file(/word\/(header|footer)\d+\.xml/).map(function (file) { return file.name; }); return headerFooters.concat(baseTags); }, textPath: function textPath(doc) { return doc.targets[0]; }, tagsXmlTextArray: ["Company", "HyperlinkBase", "Manager", "cp:category", "cp:keywords", "dc:creator", "dc:description", "dc:subject", "dc:title", "w:t", "m:t", "vt:lpstr"], tagsXmlLexedArray: ["w:proofState", "w:tc", "w:tr", "w:table", "w:p", "w:r", "w:br", "w:rPr", "w:pPr", "w:spacing", "w:sdtContent", "w:drawing", "w:sectPr", "w:type", "w:headerReference", "w:footerReference"], expandTags: [{ contains: "w:tc", expand: "w:tr" }], onParagraphLoop: [{ contains: "w:p", expand: "w:p", onlyTextInTag: true }], tagRawXml: "w:p", baseModules: [loopModule, spacePreserveModule, expandPairTrait, rawXmlModule, render], tagShouldContain: [{ tag: "w:tc", shouldContain: ["w:p"], value: "<w:p></w:p>" }, { tag: "w:sdtContent", shouldContain: ["w:p", "w:r"], value: "<w:p></w:p>" }] }; } module.exports = { docx: DocXFileTypeConfig, pptx: PptXFileTypeConfig };