Вход Регистрация
Файл: error-kitty/node_modules/cheerio/node_modules/CSSselect/lib/sort.js
Строк: 31
<?php
module
.exports = sortByProcedure;

/*
    sort the parts of the passed selector,
    as there is potential for optimization
    (some types of selectors are faster than others)
*/

var ATTRIBUTE = 1;

var 
procedure = {
    
__proto__: null,
    
universal: 5, //should be last so that it can be ignored
    
tag: 3, //very quick test
    
attribute: ATTRIBUTE,
    
pseudo: 0, //can be pretty expensive (especially :has)

    //everything else shouldn't be moved
    
descendant: -1,
    
child: -1,
    
parent: -1,
    
sibling: -1,
    
adjacent: -1
};

var 
attributes = {
    
__proto__: null,
    
exists: 8,
    
equals: 7,
    
not: 6,
    
start: 5,
    
end: 4,
    
any: 3,
    
hyphen: 2,
    
element: 1
};

function 
sortByProcedure(arr){
    for(var 
i = 1; i < arr.length; i++){
        var 
procNew = procedure[arr[i].type];

        if(
procNew < 0) continue;

        for(var 
j = i - 1; j >= 0; j--){
            if(
                
procNew > procedure[arr[j].type] || !(
                    
procNew === ATTRIBUTE &&
                    
procedure[arr[j].type] === ATTRIBUTE &&
                    
attributes[arr[i].action] <= attributes[arr[j].action]
                )
            ) break;

            var 
tmp = arr[j + 1];
            
arr[j + 1] = arr[j];
            
arr[j] = tmp;
        }
    }
    return 
arr;
}
?>
Онлайн: 2
Реклама