Вход Регистрация
Файл: error-kitty/node_modules/cheerio/node_modules/CSSselect/lib/general.js
Строк: 104
<?php
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;
    }
};
?>
Онлайн: 2
Реклама