react / wstein / node_modules / jest-cli / node_modules / jsdom / node_modules / htmlparser2 / node_modules / domutils / lib / querying.js
81149 viewsvar isTag = require("domelementtype").isTag;12module.exports = {3filter: filter,4find: find,5findOneChild: findOneChild,6findOne: findOne,7existsOne: existsOne,8findAll: findAll9};1011function filter(test, element, recurse, limit){12if(!Array.isArray(element)) element = [element];1314if(typeof limit !== "number" || !isFinite(limit)){15limit = Infinity;16}17return find(test, element, recurse !== false, limit);18}1920function find(test, elems, recurse, limit){21var result = [], childs;2223for(var i = 0, j = elems.length; i < j; i++){24if(test(elems[i])){25result.push(elems[i]);26if(--limit <= 0) break;27}2829childs = elems[i].children;30if(recurse && childs && childs.length > 0){31childs = find(test, childs, recurse, limit);32result = result.concat(childs);33limit -= childs.length;34if(limit <= 0) break;35}36}3738return result;39}4041function findOneChild(test, elems){42for(var i = 0, l = elems.length; i < l; i++){43if(test(elems[i])) return elems[i];44}4546return null;47}4849function findOne(test, elems){50var elem = null;5152for(var i = 0, l = elems.length; i < l && !elem; i++){53if(!isTag(elems[i])){54continue;55} else if(test(elems[i])){56elem = elems[i];57} else if(elems[i].children.length > 0){58elem = findOne(test, elems[i].children);59}60}6162return elem;63}6465function existsOne(test, elems){66for(var i = 0, l = elems.length; i < l; i++){67if(68isTag(elems[i]) && (69test(elems[i]) || (70elems[i].children.length > 0 &&71existsOne(test, elems[i].children)72)73)74){75return true;76}77}7879return false;80}8182function findAll(test, elems){83var result = [];84for(var i = 0, j = elems.length; i < j; i++){85if(!isTag(elems[i])) continue;86if(test(elems[i])) result.push(elems[i]);8788if(elems[i].children.length > 0){89result = result.concat(findAll(test, elems[i].children));90}91}92return result;93}949596