2025-10-01 19:55:38 +02:00

86 lines
2.9 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
function seekForNS(node, parentNS) {
if (!node.attributes)
return parentNS;
var ns = {};
for (var name_1 in parentNS)
ns[name_1] = parentNS[name_1];
for (var name_2 in node.attributes) {
if (name_2.indexOf('xmlns:') === 0 || name_2 === 'xmlns') {
var value = node.attributes[name_2];
if (name_2 === 'xmlns')
ns._default = value;
else
ns[name_2.substring('xmlns:'.length)] = value;
}
}
return ns;
}
function mutateNodeNS(node, parentNS) {
if (parentNS === void 0) { parentNS = {}; }
if (!node)
return undefined;
if (node.find)
return node;
var nss = seekForNS(node, parentNS);
if (node.name) {
for (var ns in nss) {
if (ns === '_default' && node.name.indexOf(':') === -1) {
node.name = nss[ns] + node.name;
break;
}
else if (node.name.indexOf(ns + ':') === 0) {
node.name = nss[ns] + node.name.substring((ns + ':').length);
break;
}
}
}
node.findIndex = function (name) {
for (var index = 0; index < node.elements.length; ++index)
if (node.elements[index] && node.elements[index].name && node.elements[index].name === name)
return index;
return -1;
};
node.find = function (name) {
for (var _i = 0, _a = node.elements; _i < _a.length; _i++) {
var element = _a[_i];
if (element && element.name && element.name === name)
return element;
}
throw new Error('Cannot find the XML element : ' + name);
};
node.findMany = function (name) {
var elements = [];
for (var _i = 0, _a = node.elements; _i < _a.length; _i++) {
var element = _a[_i];
if (element && element.name && element.name === name)
elements.push(element);
}
return elements;
};
node.findText = function () {
for (var _i = 0, _a = node.elements; _i < _a.length; _i++) {
var element = _a[_i];
if (element && element.type === 'text')
return element.text;
}
return '';
};
node.findTexts = function () {
var texts = [];
for (var _i = 0, _a = node.elements; _i < _a.length; _i++) {
var element = _a[_i];
if (element && element.type === 'text')
texts.push(element.text);
}
return texts;
};
if (node.elements)
node.elements.forEach(function (n) { return mutateNodeNS(n, nss); });
else
node.elements = [];
return node;
}
exports.mutateNodeNS = mutateNodeNS;