| Index: node_modules/vulcanize/node_modules/whacko/node_modules/CSSselect/lib/sort.js
|
| diff --git a/node_modules/vulcanize/node_modules/whacko/node_modules/CSSselect/lib/sort.js b/node_modules/vulcanize/node_modules/whacko/node_modules/CSSselect/lib/sort.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..c97c7c77aa605184566d67529fb7a729edc2d102
|
| --- /dev/null
|
| +++ b/node_modules/vulcanize/node_modules/whacko/node_modules/CSSselect/lib/sort.js
|
| @@ -0,0 +1,59 @@
|
| +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;
|
| +}
|
|
|