-
Notifications
You must be signed in to change notification settings - Fork 43
/
Copy pathutils.js
44 lines (33 loc) · 1.07 KB
/
utils.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
exports.getElements = (node, tagName) => {
if (!node || !node.getElementsByTagName(tagName)) {
return [];
}
const elements = node.getElementsByTagName(tagName);
return Array.prototype.slice.call(elements);
};
exports.getChildElements = (node, tagName, namespace) => {
if (!node) {
return [];
}
const elements = namespace
? node.getElementsByTagNameNS(namespace, tagName)
: node.getElementsByTagName(tagName);
if (!elements) {
return [];
}
return Array.prototype.filter.call(
elements,
(element) => element.parentNode.nodeName === node.nodeName
);
};
exports.getElementTextContentArray = (node, tagName, namespace) => {
const nodes = exports.getChildElements(node, tagName, namespace);
if (!nodes || nodes.length === 0) {
return [];
}
return nodes.map((node) => node.textContent);
};
exports.getElementTextContent = (node, tagName, namespace) => {
const array = exports.getElementTextContentArray(node, tagName, namespace);
return array.length === 0 ? undefined : array[0];
};