MCPcopy Create free account
hub / github.com/TruthHun/BookStack / writeString

Function writeString

static/word2md/mammoth.browser.js:3775–3824  ·  view source on GitHub ↗
(root, namespaces)

Source from the content-addressed store, hash-verified

3773
3774
3775function writeString(root, namespaces) {
3776 var uriToPrefix = _.invert(namespaces);
3777
3778 var nodeWriters = {
3779 element: writeElement,
3780 text: writeTextNode
3781 };
3782
3783 function writeNode(builder, node) {
3784 return nodeWriters[node.type](builder, node);
3785 }
3786
3787 function writeElement(builder, element) {
3788 var elementBuilder = builder.element(mapElementName(element.name), element.attributes);
3789 element.children.forEach(function(child) {
3790 writeNode(elementBuilder, child);
3791 });
3792 }
3793
3794 function mapElementName(name) {
3795 var longFormMatch = /^\{(.*)\}(.*)$/.exec(name);
3796 if (longFormMatch) {
3797 var prefix = uriToPrefix[longFormMatch[1]];
3798 return prefix + (prefix === "" ? "" : ":") + longFormMatch[2];
3799 } else {
3800 return name;
3801 }
3802 }
3803
3804 function writeDocument(root) {
3805 var builder = xmlbuilder
3806 .create(mapElementName(root.name), {
3807 version: '1.0',
3808 encoding: 'UTF-8',
3809 standalone: true
3810 });
3811
3812 _.forEach(namespaces, function(uri, prefix) {
3813 var key = "xmlns" + (prefix === "" ? "" : ":" + prefix);
3814 builder.attribute(key, uri);
3815 });
3816
3817 root.children.forEach(function(child) {
3818 writeNode(builder, child);
3819 });
3820 return builder.end();
3821 }
3822
3823 return writeDocument(root);
3824}
3825
3826function writeTextNode(builder, node) {
3827 builder.text(node.value);

Callers

nothing calls this directly

Calls 1

writeDocumentFunction · 0.70

Tested by

no test coverage detected