UNPKG

docxtemplater

Version:

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

71 lines (54 loc) 1.57 kB
"use strict"; var _require = require("./doc-utils.js"), concatArrays = _require.concatArrays, utf8ToWord = _require.utf8ToWord; var _require2 = require("./errors.js"), throwUnimplementedTagType = _require2.throwUnimplementedTagType; function moduleRender(part, options) { var moduleRendered; for (var i = 0, l = options.modules.length; i < l; i++) { var _module = options.modules[i]; moduleRendered = _module.render(part, options); if (moduleRendered) { return moduleRendered; } } return false; } function render(options) { var baseNullGetter = options.baseNullGetter; var compiled = options.compiled, scopeManager = options.scopeManager; options.nullGetter = function (part, sm) { return baseNullGetter(part, sm || scopeManager); }; if (!options.prefix) { options.prefix = ""; } if (options.index) { options.prefix = options.prefix + options.index + "-"; } var errors = []; var parts = compiled.map(function (part, i) { options.index = i; var moduleRendered = moduleRender(part, options); if (moduleRendered) { if (moduleRendered.errors) { errors = concatArrays([errors, moduleRendered.errors]); } return moduleRendered.value; } if (part.type === "content" || part.type === "tag") { if (part.position === "insidetag") { return utf8ToWord(part.value); } return part.value; } throwUnimplementedTagType(part, i); }); return { errors: errors, parts: parts }; } module.exports = render;