docx4js-fork
Version:
javascript docx parser
128 lines (112 loc) • 13.6 kB
JavaScript
;
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _cheerio = require("cheerio");
var _cheerio2 = _interopRequireDefault(_cheerio);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
_cheerio2.default.prototype.props = function () {
var opt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
if (this.length == 0) return {};
var $ = this.constructor;
var names = opt.names,
_opt$nameFn = opt.nameFn,
nameFn = _opt$nameFn === undefined ? function (a) {
return names && names[a] || a;
} : _opt$nameFn,
_opt$__filter = opt.__filter,
__filter = _opt$__filter === undefined ? '*' : _opt$__filter,
_opt$tidy = opt.tidy,
tidy = _opt$tidy === undefined ? function (a) {
return a;
} : _opt$tidy;
var _xmlns = function _xmlns(attribs) {
return Object.keys(attribs).filter(function (k) {
return !k.startsWith("xmlns");
}).reduce(function (o, k) {
var v = attribs[k];
k = k.split(":").pop();
var b = opt[k] ? opt[k](v) : v;
if (b != undefined) {
o[nameFn(k)] = b;
}
return o;
}, {});
};
var set = function set(a, o) {
var k = a.name.split(":").pop();
var b = opt[k] ? opt[k](a) : toJS(a);
if (b != undefined) {
o[nameFn(k, a, o)] = opt["tidy_" + k] ? opt["tidy_" + k](b) : b;
}
return o;
};
var toJS = function toJS(node, p) {
var children = node.children,
attribs = node.attribs;
return children.filter(function (a) {
return a.name && $(a).is(__filter);
}).reduce(function (o, a) {
return set(a, o);
}, _extends({}, _xmlns(attribs)));
};
var props = toJS(this[0]);
return tidy ? tidy(props) : props;
};
_cheerio2.default.prototype.forwardUntil = function (selector, filter) {
var Empty = this.constructor.root().not(function (a) {
return true;
});
var $ = function $(n) {
return Empty.not(function (a) {
return true;
}).add(n);
};
var until = Empty,
filtered = Empty;
var next = this.get(0);
var parentNext = function parentNext(node) {
return node && node.parent && (node.parent.next || parentNext(node.parent));
};
var getNext = function getNext(node) {
return node && (node.children && node.children[0] || node.next || parentNext(node));
};
while (next && (next = getNext(next))) {
var $n = $(next);
if ($n.is(selector)) {
until = until.add(next);
break;
} else if (filter && $n.is(filter)) {
filtered = filtered.add(next);
}
}
return filter ? filtered : until;
};
_cheerio2.default.prototype.backwardUntil = function (selector, filter) {
var Empty = this.constructor.root().not(function (a) {
return true;
});
var $ = function $(n) {
return Empty.not(function (a) {
return true;
}).add(n);
};
var until = Empty,
filtered = Empty;
var prev = this.get(0);
var parentPrev = function parentPrev(node) {
return node && node.parent && (node.parent.prev || parentPrev(node.parent));
};
var getPrev = function getPrev(node) {
return node && (node.children && node.children[node.children.length - 1] || node.prev || parentPrev(node));
};
while (prev && (prev = getPrev(prev))) {
var $n = $(prev);
if ($n.is(selector)) {
until = until.add(prev);
break;
} else if (filter && $n.is(filter)) {
filtered = filtered.add(next);
}
}
return filter ? filtered : until;
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jaGVlcmlvLWZuLmpzIl0sIm5hbWVzIjpbInByb3RvdHlwZSIsInByb3BzIiwib3B0IiwibGVuZ3RoIiwiJCIsImNvbnN0cnVjdG9yIiwibmFtZXMiLCJuYW1lRm4iLCJhIiwiX19maWx0ZXIiLCJ0aWR5IiwiX3htbG5zIiwiT2JqZWN0Iiwia2V5cyIsImF0dHJpYnMiLCJmaWx0ZXIiLCJrIiwic3RhcnRzV2l0aCIsInJlZHVjZSIsIm8iLCJ2Iiwic3BsaXQiLCJwb3AiLCJiIiwidW5kZWZpbmVkIiwic2V0IiwibmFtZSIsInRvSlMiLCJub2RlIiwicCIsImNoaWxkcmVuIiwiaXMiLCJmb3J3YXJkVW50aWwiLCJzZWxlY3RvciIsIkVtcHR5Iiwicm9vdCIsIm5vdCIsImFkZCIsIm4iLCJ1bnRpbCIsImZpbHRlcmVkIiwibmV4dCIsImdldCIsInBhcmVudE5leHQiLCJwYXJlbnQiLCJnZXROZXh0IiwiJG4iLCJiYWNrd2FyZFVudGlsIiwicHJldiIsInBhcmVudFByZXYiLCJnZXRQcmV2Il0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7Ozs7OztBQUVBLGtCQUFRQSxTQUFSLENBQWtCQyxLQUFsQixHQUF3QixZQUFnQjtBQUFBLFFBQVBDLEdBQU8sdUVBQUgsRUFBRzs7QUFDcEMsUUFBRyxLQUFLQyxNQUFMLElBQWEsQ0FBaEIsRUFDSSxPQUFPLEVBQVA7QUFDSixRQUFNQyxJQUFFLEtBQUtDLFdBQWI7O0FBSG9DLFFBSTdCQyxLQUo2QixHQUkrQkosR0FKL0IsQ0FJN0JJLEtBSjZCO0FBQUEsc0JBSStCSixHQUovQixDQUl0QkssTUFKc0I7QUFBQSxRQUl0QkEsTUFKc0IsK0JBSWY7QUFBQSxlQUFHRCxTQUFPQSxNQUFNRSxDQUFOLENBQVAsSUFBaUJBLENBQXBCO0FBQUEsS0FKZTtBQUFBLHdCQUkrQk4sR0FKL0IsQ0FJT08sUUFKUDtBQUFBLFFBSU9BLFFBSlAsaUNBSWdCLEdBSmhCO0FBQUEsb0JBSStCUCxHQUovQixDQUlvQlEsSUFKcEI7QUFB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U04sS0FBMUI7O0FBRUEsUUFBSWMsT0FBSyxLQUFLTixHQUFMLENBQVMsQ0FBVCxDQUFUO0FBQ0EsUUFBTU8sYUFBVyxTQUFYQSxVQUFXO0FBQUEsZUFBTXJCLFFBQVNBLEtBQUtnQixNQUFMLEtBQWdCaEIsS0FBS2dCLE1BQUwsQ0FBWUksSUFBWixJQUFvQkMsV0FBV3JCLEtBQUtnQixNQUFoQixDQUFwQyxDQUFmO0FBQUEsS0FBakI7QUFDQSxRQUFNTSxVQUFRLFNBQVJBLE9BQVE7QUFBQSxlQUFNdEIsU0FBVUEsS0FBS0UsUUFBTCxJQUFlRixLQUFLRSxRQUFMLENBQWNGLEtBQUtFLFFBQUwsQ0FBYzNCLE1BQWQsR0FBcUIsQ0FBbkMsQ0FBaEIsSUFBd0R5QixLQUFLb0IsSUFBN0QsSUFBbUVDLFdBQVdyQixJQUFYLENBQTVFLENBQU47QUFBQSxLQUFkO0FBQ0EsV0FBTW9CLFNBQVNBLE9BQUtFLFFBQVFGLElBQVIsQ0FBZCxDQUFOLEVBQW1DO0FBQy9CLFlBQUlGLEtBQUcxQyxFQUFFNEMsSUFBRixDQUFQO0FBQ0EsWUFBR0YsR0FBR2YsRUFBSCxDQUFNRSxRQUFOLENBQUgsRUFBbUI7QUFDZk0sb0JBQU1BLE1BQU1GLEdBQU4sQ0FBVVcsSUFBVixDQUFOO0FBQ0E7QUFDSCxTQUhELE1BR00sSUFBR2pDLFVBQVUrQixHQUFHZixFQUFILENBQU1oQixNQUFOLENBQWIsRUFBMkI7QUFDN0J5Qix1QkFBU0EsU0FBU0gsR0FBVCxDQUFhSSxJQUFiLENBQVQ7QUFDSDtBQUNKO0FBQ0QsV0FBTzFCLFNBQVN5QixRQUFULEdBQW9CRCxLQUEzQjtBQUNILENBbEJEIiwiZmlsZSI6ImNoZWVyaW8tZm4uanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2hlZXJpbyBmcm9tIFwiY2hlZXJpb1wiXHJcblxyXG5jaGVlcmlvLnByb3RvdHlwZS5wcm9wcz1mdW5jdGlvbihvcHQ9e30pe1xyXG4gICAgaWYodGhpcy5sZW5ndGg9PTApXHJcbiAgICAgICAgcmV0dXJuIHt9XHJcbiAgICBjb25zdCAkPXRoaXMuY29uc3RydWN0b3JcclxuICAgIGNvbnN0IHtuYW1lcywgbmFtZUZuPWE9Pm5hbWVzJiZuYW1lc1thXXx8YSxfX2ZpbHRlcj0nKicsdGlkeT1hPT5hfT1vcHRcclxuXHJcbiAgICBjb25zdCBfeG1sbnM9YXR0cmlicz0+T2JqZWN0LmtleXMoYXR0cmlicylcclxuICAgICAgICAuZmlsdGVyKGs9PiFrLnN0YXJ0c1dpdGgoXCJ4bWxuc1wiKSlcclxuICAgICAgICAucmVkdWNlKChvLGspPT57XHJcbiAgICAgICAgICAgIGNvbnN0IHY9YXR0cmlic1trXVxyXG4gICAgICAgICAgICBrPWsuc3BsaXQoXCI6XCIpLnBvcCgpXHJcbiAgICAgICAgICAgIGNvbnN0IGI9b3B0W2tdID8gb3B0W2tdKHYpIDogdlxyXG4gICAgICAgICAgICBpZihiIT11bmRlZmluZWQpe1xyXG4gICAgICAgICAgICAgICAgb1tuYW1lRm4oayldPWJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gb1xyXG4gICAgICAgIH0se30pXHJcblxyXG5cdGNvbnN0IHNldD0oYSxvKT0+e1xyXG4gICAgICAgIGNvbnN0IGs9YS5uYW1lLnNwbGl0KFwiOlwiKS5wb3AoKVxyXG4gICAgICAgIGNvbnN0IGI9b3B0W2tdP29wdFtrXShhKTp0b0pTKGEpXHJcbiAgICAgICAgaWYoYiE9dW5kZWZpbmVkKXtcclxuICAgICAgICAgICAgb1tuYW1lRm4oayxhLG8pXT1vcHRbYHRpZHlfJHtrfWBdID8gb3B0W2B0aWR5XyR7a31gXShiKSA6IGJcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG9cclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB0b0pTPShub2RlLHApPT57XHJcbiAgICAgICAgY29uc3R7Y2hpbGRyZW4sYXR0cmlic309bm9kZVxyXG4gICAgICAgIHJldHVybiBjaGlsZHJlblxyXG4gICAgICAgICAgICAuZmlsdGVyKGE9PmEubmFtZSAmJiAkKGEpLmlzKF9fZmlsdGVyKSlcclxuICAgICAgICAgICAgLnJlZHVjZSgobyxhKT0+c2V0KGEsbyksey4uLl94bWxucyhhdHRyaWJzKX0pXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcHJvcHM9dG9KUyh0aGlzWzBdKVxyXG5cclxuICAgIHJldHVybiB0aWR5ID8gdGlkeShwcm9wcykgOiBwcm9wc1xyXG59XHJcblxyXG5jaGVlcmlvLnByb3RvdHlwZS5mb3J3YXJkVW50aWw9ZnVuY3Rpb24oc2VsZWN0b3IsZmlsdGVyKXtcclxuICAgIGNvbnN0IEVtcHR5PXRoaXMuY29uc3RydWN0b3Iucm9vdCgpLm5vdChhPT50cnVlKVxyXG4gICAgY29uc3QgJD1uPT5FbXB0eS5ub3QoYT0+dHJ1ZSkuYWRkKG4pXHJcbiAgICBsZXQgdW50aWw9RW1wdHksIGZpbHRlcmVkPUVtcHR5XHJcblxyXG4gICAgbGV0IG5leHQ9dGhpcy5nZXQoMClcclxuICAgIGNvbnN0IHBhcmVudE5leHQ9bm9kZT0+bm9kZSYmKG5vZGUucGFyZW50ICYmIChub2RlLnBhcmVudC5uZXh0IHx8IHBhcmVudE5leHQobm9kZS5wYXJlbnQpKSlcclxuICAgIGNvbnN0IGdldE5leHQ9bm9kZT0+bm9kZSAmJiAoKG5vZGUuY2hpbGRyZW4mJm5vZGUuY2hpbGRyZW5bMF0pfHxub2RlLm5leHR8fHBhcmVudE5leHQobm9kZSkpXHJcbiAgICB3aGlsZShuZXh0ICYmIChuZXh0PWdldE5leHQobmV4dCkpKXtcclxuICAgICAgICBsZXQgJG49JChuZXh0KVxyXG4gICAgICAgIGlmKCRuLmlzKHNlbGVjdG9yKSl7XHJcbiAgICAgICAgICAgIHVudGlsPXVudGlsLmFkZChuZXh0KVxyXG4gICAgICAgICAgICBicmVha1xyXG4gICAgICAgIH1lbHNlIGlmKGZpbHRlciAmJiAkbi5pcyhmaWx0ZXIpKXtcclxuICAgICAgICAgICAgZmlsdGVyZWQ9ZmlsdGVyZWQuYWRkKG5leHQpXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZpbHRlciA/IGZpbHRlcmVkIDogdW50aWxcclxufVxyXG5jaGVlcmlvLnByb3RvdHlwZS5iYWNrd2FyZFVudGlsPWZ1bmN0aW9uKHNlbGVjdG9yLGZpbHRlcil7XHJcbiAgICBjb25zdCBFbXB0eT10aGlzLmNvbnN0cnVjdG9yLnJvb3QoKS5ub3QoYT0+dHJ1ZSlcclxuICAgIGNvbnN0ICQ9bj0+RW1wdHkubm90KGE9PnRydWUpLmFkZChuKVxyXG4gICAgbGV0IHVudGlsPUVtcHR5LCBmaWx0ZXJlZD1FbXB0eVxyXG5cclxuICAgIGxldCBwcmV2PXRoaXMuZ2V0KDApXHJcbiAgICBjb25zdCBwYXJlbnRQcmV2PW5vZGU9Pm5vZGUgJiYgKG5vZGUucGFyZW50ICYmIChub2RlLnBhcmVudC5wcmV2IHx8IHBhcmVudFByZXYobm9kZS5wYXJlbnQpKSlcclxuICAgIGNvbnN0IGdldFByZXY9bm9kZT0+bm9kZSAmJiAoKG5vZGUuY2hpbGRyZW4mJm5vZGUuY2hpbGRyZW5bbm9kZS5jaGlsZHJlbi5sZW5ndGgtMV0pfHxub2RlLnByZXZ8fHBhcmVudFByZXYobm9kZSkpXHJcbiAgICB3aGlsZShwcmV2ICYmIChwcmV2PWdldFByZXYocHJldikpKXtcclxuICAgICAgICBsZXQgJG49JChwcmV2KVxyXG4gICAgICAgIGlmKCRuLmlzKHNlbGVjdG9yKSl7XHJcbiAgICAgICAgICAgIHVudGlsPXVudGlsLmFkZChwcmV2KVxyXG4gICAgICAgICAgICBicmVha1xyXG4gICAgICAgIH1lbHNlIGlmKGZpbHRlciAmJiAkbi5pcyhmaWx0ZXIpKXtcclxuICAgICAgICAgICAgZmlsdGVyZWQ9ZmlsdGVyZWQuYWRkKG5leHQpXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZpbHRlciA/IGZpbHRlcmVkIDogdW50aWxcclxufVxyXG4iXX0=