@the-little-books/little
Version:
66 lines • 2.31 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.parse_nodes = void 0;
const node_api_1 = require("./node-api");
const ut = __importStar(require("../ut"));
const { DOMParser } = require("xmldom");
const parser = new DOMParser();
function parse_nodes(text, opts = {
trim: true,
no_blank_text_node: true,
}) {
const nodes = Array.from(parser.parseFromString(text, "text/xml").childNodes);
return nodes.flatMap((node) => nodes_from_node(node, opts));
}
exports.parse_nodes = parse_nodes;
function nodes_from_node(node, opts) {
if (node.tagName) {
return [from_node(node, opts)];
}
else if (node.nodeName === "#text") {
return nodes_from_text(node, opts);
}
else {
return [];
}
}
function from_node(node, opts) {
const attributes = {};
if (node.attributes) {
for (const { name, value } of Array.from(node.attributes)) {
attributes[name] = value;
}
}
let contents = node.childNodes
? Array.from(node.childNodes).flatMap((node) => nodes_from_node(node, opts))
: [];
return node_api_1.h(node.tagName, attributes, contents);
}
function nodes_from_text(node, opts) {
if (ut.blank_p(node.data) && opts.no_blank_text_node) {
return [];
}
else {
return opts.trim ? [node_api_1.text(node.data.trim())] : [node_api_1.text(node.data)];
}
}
//# sourceMappingURL=node-parse.js.map