Socket
Socket
Sign inDemoInstall

domutils

Package Overview
Dependencies
1
Maintainers
1
Versions
40
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.3.0 to 1.4.0

106

lib/querying.js

@@ -1,13 +0,33 @@

exports.find = function(test, arr, recurse, limit){
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 = arr.length; i < j; i++){
if(test(arr[i])){
result.push(arr[i]);
for(var i = 0, j = elems.length; i < j; i++){
if(test(elems[i])){
result.push(elems[i]);
if(--limit <= 0) break;
}
childs = this.getChildren(arr[i]);
childs = elems[i].children;
if(recurse && childs && childs.length > 0){
childs = this.find(test, childs, recurse, limit);
childs = find(test, childs, recurse, limit);
result = result.concat(childs);

@@ -20,20 +40,22 @@ limit -= childs.length;

return result;
};
}
exports.findOneChild = function(test, arr){
for(var i = 0, l = arr.length; i < l; i++){
if(test(arr[i])) return arr[i];
function findOneChild(test, elems){
for(var i = 0, l = elems.length; i < l; i++){
if(test(elems[i])) return elems[i];
}
return null;
};
}
exports.findOne = function(test, arr){
function findOne(test, elems){
var elem = null;
for(var i = 0, l = arr.length; i < l && !elem; i++){
if(test(arr[i])){
elem = arr[i];
} else if(arr[i].children && arr[i].children.length > 0){
elem = this.findOne(test, arr[i].children);
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);
}

@@ -43,36 +65,32 @@ }

return elem;
};
}
exports.findAll = function(test, elems){
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]);
var childs = this.getChildren(elems[i]);
if(childs && childs.length){
result = result.concat(this.findAll(test, childs));
if(elems[i].children.length > 0){
result = result.concat(findAll(test, elems[i].children));
}
}
return result;
};
exports.filter = function(test, element, recurse, limit){
if(!Array.isArray(element)) element = [element];
if(typeof limit !== "number" || !isFinite(limit)){
if(recurse === false){
return element.filter(test);
} else {
return this.findAll(test, element);
}
} else if(limit === 1){
if(recurse === false){
element = this.findOneChild(test, element);
} else {
element = this.findOne(test, element);
}
return element ? [element] : [];
} else {
return this.find(test, element, recurse !== false, limit);
}
};
}
{
"name": "domutils",
"version": "1.3.0",
"version": "1.4.0",
"description": "utilities for working with htmlparser2's dom",

@@ -5,0 +5,0 @@ "main": "index.js",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc