UNPKG

1.58 kBJavaScriptView Raw
1function isTag(elem){
2 return elem.nodeType === 1;
3}
4function getChildren(elem){
5 return Array.prototype.slice.call(elem.childNodes, 0);
6}
7function getParent(elem){
8 return elem.parentElement;
9}
10
11module.exports = {
12 isTag: isTag,
13 getSiblings: function(elem){
14 var parent = getParent(elem);
15 return parent && getChildren(parent);
16 },
17 getChildren: getChildren,
18 getParent: getParent,
19 getAttributeValue: function(elem, name){
20 return elem.attributes[name].value;
21 },
22 hasAttrib: function(elem, name){
23 return name in elem.attributes;
24 },
25 getName: function(elem){
26 return elem.tagName.toLowerCase();
27 },
28 findOne: function findOne(test, arr){
29 var elem = null;
30
31 for(var i = 0, l = arr.length; i < l && !elem; i++){
32 if(test(arr[i])){
33 elem = arr[i];
34 } else {
35 var childs = getChildren(arr[i]);
36 if(childs && childs.length > 0){
37 elem = findOne(test, childs);
38 }
39 }
40 }
41
42 return elem;
43 },
44 findAll: function findAll(test, elems){
45 var result = [];
46 for(var i = 0, j = elems.length; i < j; i++){
47 if(!isTag(elems[i])) continue;
48 if(test(elems[i])) result.push(elems[i]);
49 var childs = getChildren(elems[i]);
50 if(childs) result = result.concat(findAll(test, childs));
51 }
52 return result;
53 },
54 //https://github.com/ded/qwery/blob/master/pseudos/qwery-pseudos.js#L47-54
55 getText: function getText(elem) {
56 var str = "",
57 childs = getChildren(elem);
58
59 if(!childs) return str;
60
61 for(var i = 0; i < childs.length; i++){
62 if(isTag(childs[i])) str += elem.textContent || elem.innerText || getText(childs[i]);
63 }
64
65 return str;
66 }
67};