| Index: node_modules/vulcanize/node_modules/whacko/node_modules/CSSselect/lib/general.js
|
| diff --git a/node_modules/vulcanize/node_modules/whacko/node_modules/CSSselect/lib/general.js b/node_modules/vulcanize/node_modules/whacko/node_modules/CSSselect/lib/general.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..3e94eb9b4f63b06c730eb959fbdd3dc3f69e2306
|
| --- /dev/null
|
| +++ b/node_modules/vulcanize/node_modules/whacko/node_modules/CSSselect/lib/general.js
|
| @@ -0,0 +1,80 @@
|
| +var DomUtils = require("domutils"),
|
| + isTag = DomUtils.isTag,
|
| + getParent = DomUtils.getParent,
|
| + getChildren = DomUtils.getChildren,
|
| + getSiblings = DomUtils.getSiblings,
|
| + getName = DomUtils.getName;
|
| +
|
| +/*
|
| + all available rules
|
| +*/
|
| +module.exports = {
|
| + __proto__: null,
|
| +
|
| + attribute: require("./attributes.js").compile,
|
| + pseudo: require("./pseudos.js").compile,
|
| +
|
| + //tags
|
| + tag: function(next, data){
|
| + var name = data.name;
|
| + return function tag(elem){
|
| + return getName(elem) === name && next(elem);
|
| + };
|
| + },
|
| +
|
| + //traversal
|
| + descendant: function(next){
|
| + return function descendant(elem){
|
| + var found = false;
|
| +
|
| + while(!found && (elem = getParent(elem))){
|
| + found = next(elem);
|
| + }
|
| +
|
| + return found;
|
| + };
|
| + },
|
| + parent: function(next){
|
| + return function parent(elem){
|
| + return getChildren(elem).some(next);
|
| + };
|
| + },
|
| + child: function(next){
|
| + return function child(elem){
|
| + var parent = getParent(elem);
|
| + return !!parent && next(parent);
|
| + };
|
| + },
|
| + sibling: function(next){
|
| + return function sibling(elem){
|
| + var siblings = getSiblings(elem);
|
| +
|
| + for(var i = 0; i < siblings.length; i++){
|
| + if(isTag(siblings[i])){
|
| + if(siblings[i] === elem) break;
|
| + if(next(siblings[i])) return true;
|
| + }
|
| + }
|
| +
|
| + return false;
|
| + };
|
| + },
|
| + adjacent: function(next){
|
| + return function adjacent(elem){
|
| + var siblings = getSiblings(elem),
|
| + lastElement;
|
| +
|
| + for(var i = 0; i < siblings.length; i++){
|
| + if(isTag(siblings[i])){
|
| + if(siblings[i] === elem) break;
|
| + lastElement = siblings[i];
|
| + }
|
| + }
|
| +
|
| + return !!lastElement && next(lastElement);
|
| + };
|
| + },
|
| + universal: function(next){
|
| + return next;
|
| + }
|
| +};
|
|
|