UNPKG

docx-hub

Version:
133 lines (107 loc) 11.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }(); var _docx4js = require("docx4js"); var _docx4js2 = _interopRequireDefault(_docx4js); var _esprima = require("esprima"); var _esprima2 = _interopRequireDefault(_esprima); var _document = require("./model/document"); var _document2 = _interopRequireDefault(_document); var _exp2 = require("./model/_exp"); var _exp3 = _interopRequireDefault(_exp2); var _if = require("./model/_if"); var _if2 = _interopRequireDefault(_if); var _for = require("./model/_for"); var _for2 = _interopRequireDefault(_for); var _picture = require("./model/_picture"); var _picture2 = _interopRequireDefault(_picture); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function isExp(text) { text = text.trim(); if (text.charAt(0) == '$' && text.charAt(1) == '{' && text.charAt(text.length - 1) == '}') { text = text.substring(2, text.length - 1).trim(); if (text.length) return text; } return false; } Object.assign(_docx4js2.default.factory, { extendControl: function extendControl(type, wXml, doc, parent) { var tagEl = wXml.$1('>sdtPr>tag'), tag = tagEl && tagEl.attr('w:val') || false; switch (type) { case "picture": var exp = null; if (exp = isExp(tag)) return new _picture2.default(wXml, doc, parent, _esprima2.default.parse(exp)); break; case "richtext": if (tag) { tag = tag.trim(); try { var parsedCode = _esprima2.default.parse(tag + '{}'); if (parsedCode.body.length == 2) //for/if(){}{} parsedCode.body.pop();else if (parsedCode.body.length > 1) throw new Error("syntax error"); var _parsedCode$body = _slicedToArray(parsedCode.body, 1); var firstStatement = _parsedCode$body[0]; switch (firstStatement.type) { case 'ForStatement': return new _for2.default(wXml, doc, parent, parsedCode); break; case 'IfStatement': return new _if2.default(wXml, doc, parent, parsedCode); break; } } catch (e) { //console.error(`error ${this.type} code:${this.code}`) //throw e } } else { var _exp = null; if (_exp = isExp(wXml.textContent.trim())) { return new _exp3.default(wXml, doc, parent, _esprima2.default.parse(_exp)); } } break; } }, extend: function extend(wXml) { if (wXml.localName == 'document') return new (Function.prototype.bind.apply(_document2.default, [null].concat(Array.prototype.slice.call(arguments))))(); } }); function createFactory() { var ignore = { visit: function visit() {} }; return _docx4js2.default.createVisitorFactory(function (wordModel) { switch (wordModel.type) { case 'document': case 'variant.exp': case 'variant.for': case 'variant.if': return wordModel; default: return ignore; } }); } exports.default = { parse: function parse(file) { return _docx4js2.default.load(file).then(function (docx) { var document = docx.parse(createFactory()); return { assemble: function assemble(data, transactional) { return document.assemble(data, transactional); }, variantChildren: document.variantChildren }; }); }, assemble: function assemble(file, data) { return _docx4js2.default.load(file).then(function (docx) { return docx.parse(createFactory()).assemble(data, true); }); } }; module.exports = exports['default']; //# sourceMappingURL=data:application/json;base64,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RXZCLFFBQU8sa0JBQVEsb0JBQVIsQ0FBNkIsVUFBUyxTQUFULEVBQW1CO0FBQ3RELFVBQU8sVUFBVSxJQUFWO0FBQ1AsUUFBSyxVQUFMLENBREE7QUFFQSxRQUFLLGFBQUwsQ0FGQTtBQUdBLFFBQUssYUFBTCxDQUhBO0FBSUEsUUFBSyxZQUFMO0FBQ0MsV0FBTyxTQUFQLENBREQ7QUFKQTtBQU9DLFdBQU8sTUFBUCxDQUREO0FBTkEsR0FEc0Q7RUFBbkIsQ0FBcEMsQ0FGdUI7Q0FBeEI7O2tCQWVlO0FBQ1gsdUJBQU0sTUFBSztBQUNQLFNBQU8sa0JBQVEsSUFBUixDQUFhLElBQWIsRUFBbUIsSUFBbkIsQ0FBd0IsZ0JBQU07QUFDMUMsT0FBSSxXQUFTLEtBQUssS0FBTCxDQUFXLGVBQVgsQ0FBVCxDQURzQztBQUVqQyxVQUFPO0FBQ2QsZ0NBQVMsTUFBSyxlQUFjO0FBQzNCLFlBQU8sU0FBUyxRQUFULENBQWtCLElBQWxCLEVBQXVCLGFBQXZCLENBQVAsQ0FEMkI7S0FEZDs7QUFJZCxxQkFBaUIsU0FBUyxlQUFUO0lBSlYsQ0FGaUM7R0FBTixDQUEvQixDQURPO0VBREE7QUFhWCw2QkFBUyxNQUFLLE1BQUs7QUFDZixTQUFPLGtCQUFRLElBQVIsQ0FBYSxJQUFiLEVBQW1CLElBQW5CLENBQXdCLGdCQUFNO0FBQ2pDLFVBQU8sS0FBSyxLQUFMLENBQVcsZUFBWCxFQUE0QixRQUE1QixDQUFxQyxJQUFyQyxFQUEwQyxJQUExQyxDQUFQLENBRGlDO0dBQU4sQ0FBL0IsQ0FEZTtFQWJSIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGRvY3g0anMgZnJvbSBcImRvY3g0anNcIlxyXG5pbXBvcnQgZXNwcmltYSBmcm9tIFwiZXNwcmltYVwiXHJcblxyXG5pbXBvcnQgRG9jdW1lbnQgZnJvbSBcIi4vbW9kZWwvZG9jdW1lbnRcIlxyXG5pbXBvcnQgRXhwcmVzc2lvbiBmcm9tIFwiLi9tb2RlbC9fZXhwXCJcclxuaW1wb3J0IElmIGZyb20gXCIuL21vZGVsL19pZlwiXHJcbmltcG9ydCBGb3IgZnJvbSBcIi4vbW9kZWwvX2ZvclwiXHJcbmltcG9ydCBQaWN0dXJlIGZyb20gXCIuL21vZGVsL19waWN0dXJlXCJcclxuXHJcbmZ1bmN0aW9uIGlzRXhwKHRleHQpe1xyXG5cdHRleHQ9dGV4dC50cmltKClcclxuXHRpZih0ZXh0LmNoYXJBdCgwKSA9PSAnJCcgJiYgdGV4dC5jaGFyQXQoMSkgPT0gJ3snICYmIHRleHQuY2hhckF0KHRleHQubGVuZ3RoIC0gMSkgPT0gJ30nKXtcclxuXHRcdHRleHQ9dGV4dC5zdWJzdHJpbmcoMix0ZXh0Lmxlbmd0aC0xKS50cmltKClcclxuXHRcdGlmKHRleHQubGVuZ3RoKVxyXG5cdFx0XHRyZXR1cm4gdGV4dFxyXG5cdH1cclxuXHRyZXR1cm4gZmFsc2VcclxufVxyXG5cclxuT2JqZWN0LmFzc2lnbihkb2N4NGpzLmZhY3Rvcnkse1xyXG5cdGV4dGVuZENvbnRyb2wodHlwZSx3WG1sLGRvYyxwYXJlbnQpe1xyXG5cdFx0bGV0IHRhZ0VsPXdYbWwuJDEoJz5zZHRQcj50YWcnKSxcclxuXHRcdFx0dGFnPXRhZ0VsICYmIHRhZ0VsLmF0dHIoJ3c6dmFsJykgfHwgZmFsc2VcclxuXHJcblx0XHRzd2l0Y2godHlwZSl7XHJcblx0XHRjYXNlIFwicGljdHVyZVwiOlxyXG5cdFx0XHRsZXQgZXhwPW51bGxcclxuXHRcdFx0aWYoZXhwPWlzRXhwKHRhZykpXHJcblx0XHRcdFx0cmV0dXJuIG5ldyBQaWN0dXJlKHdYbWwsZG9jLHBhcmVudCxlc3ByaW1hLnBhcnNlKGV4cCkpXHJcblx0XHRicmVha1xyXG5cdFx0Y2FzZSBcInJpY2h0ZXh0XCI6XHJcblx0XHRcdGlmKHRhZyl7XHJcblx0XHRcdFx0dGFnPXRhZy50cmltKClcclxuXHRcdFx0XHR0cnl7XHJcblx0XHRcdFx0XHRsZXQgcGFyc2VkQ29kZT1lc3ByaW1hLnBhcnNlKHRhZysne30nKVxyXG5cdFx0XHRcdFx0aWYocGFyc2VkQ29kZS5ib2R5Lmxlbmd0aD09MikvL2Zvci9pZigpe317fVxyXG5cdFx0XHRcdFx0XHRwYXJzZWRDb2RlLmJvZHkucG9wKClcclxuXHRcdFx0XHRcdGVsc2UgaWYocGFyc2VkQ29kZS5ib2R5Lmxlbmd0aD4xKVxyXG5cdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoXCJzeW50YXggZXJyb3JcIilcclxuXHJcblx0XHRcdFx0XHRsZXQgW2ZpcnN0U3RhdGVtZW50XT1wYXJzZWRDb2RlLmJvZHlcclxuXHRcdFx0XHRcdHN3aXRjaChmaXJzdFN0YXRlbWVudC50eXBlKXtcclxuXHRcdFx0XHRcdGNhc2UgJ0ZvclN0YXRlbWVudCc6XHJcblx0XHRcdFx0XHRcdHJldHVybiBuZXcgRm9yKHdYbWwsZG9jLHBhcmVudCwgcGFyc2VkQ29kZSlcclxuXHRcdFx0XHRcdGJyZWFrXHJcblx0XHRcdFx0XHRjYXNlICdJZlN0YXRlbWVudCc6XHJcblx0XHRcdFx0XHRcdHJldHVybiBuZXcgSWYod1htbCxkb2MscGFyZW50LCBwYXJzZWRDb2RlKVxyXG5cdFx0XHRcdFx0YnJlYWtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9Y2F0Y2goZSl7XHJcblx0XHRcdFx0XHQvL2NvbnNvbGUuZXJyb3IoYGVycm9yICR7dGhpcy50eXBlfSBjb2RlOiR7dGhpcy5jb2RlfWApXHJcblx0XHRcdFx0XHQvL3Rocm93IGVcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdGxldCBleHA9bnVsbDtcclxuXHRcdFx0XHRpZihleHA9aXNFeHAod1htbC50ZXh0Q29udGVudC50cmltKCkpKXtcclxuXHRcdFx0XHRcdHJldHVybiBuZXcgRXhwcmVzc2lvbih3WG1sLGRvYyxwYXJlbnQsZXNwcmltYS5wYXJzZShleHApKVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0YnJlYWtcclxuXHRcdH1cclxuXHR9LFxyXG5cdGV4dGVuZCh3WG1sKXtcclxuXHRcdGlmKHdYbWwubG9jYWxOYW1lPT0nZG9jdW1lbnQnKVxyXG5cdFx0XHRyZXR1cm4gbmV3IERvY3VtZW50KC4uLmFyZ3VtZW50cylcclxuXHR9XHJcbn0pXHJcblxyXG5cclxuXHJcbmZ1bmN0aW9uIGNyZWF0ZUZhY3RvcnkoKXtcclxuXHRsZXQgaWdub3JlPXt2aXNpdCgpe319XHJcblx0cmV0dXJuIGRvY3g0anMuY3JlYXRlVmlzaXRvckZhY3RvcnkoZnVuY3Rpb24od29yZE1vZGVsKXtcclxuXHRcdHN3aXRjaCh3b3JkTW9kZWwudHlwZSl7XHJcblx0XHRjYXNlICdkb2N1bWVudCc6XHJcblx0XHRjYXNlICd2YXJpYW50LmV4cCc6XHJcblx0XHRjYXNlICd2YXJpYW50LmZvcic6XHJcblx0XHRjYXNlICd2YXJpYW50LmlmJzpcclxuXHRcdFx0cmV0dXJuIHdvcmRNb2RlbFxyXG5cdFx0ZGVmYXVsdDpcclxuXHRcdFx0cmV0dXJuIGlnbm9yZVxyXG5cdFx0fVxyXG5cdH0pXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICAgIHBhcnNlKGZpbGUpe1xyXG4gICAgICAgIHJldHVybiBkb2N4NGpzLmxvYWQoZmlsZSkudGhlbihkb2N4PT57XHJcblx0XHRcdHZhciBkb2N1bWVudD1kb2N4LnBhcnNlKGNyZWF0ZUZhY3RvcnkoKSlcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuXHRcdFx0XHRcdGFzc2VtYmxlKGRhdGEsdHJhbnNhY3Rpb25hbCl7XHJcblx0XHRcdFx0XHRcdHJldHVybiBkb2N1bWVudC5hc3NlbWJsZShkYXRhLHRyYW5zYWN0aW9uYWwpXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0dmFyaWFudENoaWxkcmVuOiBkb2N1bWVudC52YXJpYW50Q2hpbGRyZW5cclxuXHRcdFx0XHR9XHJcbiAgICAgICAgfSlcclxuICAgIH0sXHJcblxyXG4gICAgYXNzZW1ibGUoZmlsZSxkYXRhKXtcclxuICAgICAgICByZXR1cm4gZG9jeDRqcy5sb2FkKGZpbGUpLnRoZW4oZG9jeD0+e1xyXG4gICAgICAgICAgICByZXR1cm4gZG9jeC5wYXJzZShjcmVhdGVGYWN0b3J5KCkpLmFzc2VtYmxlKGRhdGEsdHJ1ZSlcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG59XHJcbiJdfQ==