Index: node_modules/vulcanize/node_modules/whacko/node_modules/CSSselect/node_modules/domutils/lib/querying.js |
diff --git a/node_modules/vulcanize/node_modules/whacko/node_modules/CSSselect/node_modules/domutils/lib/querying.js b/node_modules/vulcanize/node_modules/whacko/node_modules/CSSselect/node_modules/domutils/lib/querying.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..17e3aa9bdeb2d4aae12dd08a13d6ae97652c70cb |
--- /dev/null |
+++ b/node_modules/vulcanize/node_modules/whacko/node_modules/CSSselect/node_modules/domutils/lib/querying.js |
@@ -0,0 +1,94 @@ |
+var isTag = require("domelementtype").isTag; |
+ |
+module.exports = { |
+ filter: filter, |
+ find: find, |
+ findOneChild: findOneChild, |
+ findOne: findOne, |
+ existsOne: existsOne, |
+ findAll: findAll |
+}; |
+ |
+function filter(test, element, recurse, limit){ |
+ if(!Array.isArray(element)) element = [element]; |
+ |
+ if(typeof limit !== "number" || !isFinite(limit)){ |
+ limit = Infinity; |
+ } |
+ return find(test, element, recurse !== false, limit); |
+} |
+ |
+function find(test, elems, recurse, limit){ |
+ var result = [], childs; |
+ |
+ for(var i = 0, j = elems.length; i < j; i++){ |
+ if(test(elems[i])){ |
+ result.push(elems[i]); |
+ if(--limit <= 0) break; |
+ } |
+ |
+ childs = elems[i].children; |
+ if(recurse && childs && childs.length > 0){ |
+ childs = find(test, childs, recurse, limit); |
+ result = result.concat(childs); |
+ limit -= childs.length; |
+ if(limit <= 0) break; |
+ } |
+ } |
+ |
+ return result; |
+} |
+ |
+function findOneChild(test, elems){ |
+ for(var i = 0, l = elems.length; i < l; i++){ |
+ if(test(elems[i])) return elems[i]; |
+ } |
+ |
+ return null; |
+} |
+ |
+function findOne(test, elems){ |
+ var elem = null; |
+ |
+ for(var i = 0, l = elems.length; i < l && !elem; i++){ |
+ if(!isTag(elems[i])){ |
+ continue; |
+ } else if(test(elems[i])){ |
+ elem = elems[i]; |
+ } else if(elems[i].children.length > 0){ |
+ elem = findOne(test, elems[i].children); |
+ } |
+ } |
+ |
+ return elem; |
+} |
+ |
+function existsOne(test, elems){ |
+ for(var i = 0, l = elems.length; i < l; i++){ |
+ if( |
+ isTag(elems[i]) && ( |
+ test(elems[i]) || ( |
+ elems[i].children.length > 0 && |
+ existsOne(test, elems[i].children) |
+ ) |
+ ) |
+ ){ |
+ return true; |
+ } |
+ } |
+ |
+ return false; |
+} |
+ |
+function findAll(test, elems){ |
+ var result = []; |
+ for(var i = 0, j = elems.length; i < j; i++){ |
+ if(!isTag(elems[i])) continue; |
+ if(test(elems[i])) result.push(elems[i]); |
+ |
+ if(elems[i].children.length > 0){ |
+ result = result.concat(findAll(test, elems[i].children)); |
+ } |
+ } |
+ return result; |
+} |