docxml
Version:
TypeScript (component) library for building and parsing a DOCX file
30 lines (29 loc) • 1.05 kB
JavaScript
import fontoxpath from 'fontoxpath';
import { Registry } from './Registry.js';
export class Renderer extends Registry {
constructor(factory, ...sets) {
super(...sets);
Object.defineProperty(this, "factory", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
this.factory = factory;
}
render(node, additionalProps) {
return (function recurse(registry, factory, node) {
const props = {
node,
traverse: (query = './node()') => fontoxpath
.evaluateXPathToNodes(query, node, null, additionalProps || {}, {
language: fontoxpath.evaluateXPath.XQUERY_3_1_LANGUAGE,
})
.map((n) => recurse(registry, factory, n))
.filter((o) => o !== null),
...(additionalProps || {}),
};
return factory(registry.find(node), props);
})(this, this.factory, node);
}
}