86 lines
2.9 KiB
JavaScript
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;
|