Файл: 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;
}
?>