Index: tools/vulcanize/node_modules/vulcanize/node_modules/cheerio/node_modules/cheerio-select/node_modules/CSSselect/lib/sort.js |
diff --git a/tools/vulcanize/node_modules/vulcanize/node_modules/cheerio/node_modules/cheerio-select/node_modules/CSSselect/lib/sort.js b/tools/vulcanize/node_modules/vulcanize/node_modules/cheerio/node_modules/cheerio-select/node_modules/CSSselect/lib/sort.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..03ac2556ad3ff7ab3b76a7b334554d8629c48fad |
--- /dev/null |
+++ b/tools/vulcanize/node_modules/vulcanize/node_modules/cheerio/node_modules/cheerio-select/node_modules/CSSselect/lib/sort.js |
@@ -0,0 +1,37 @@ |
+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 procedure = { |
+ __proto__: null, |
+ universal: 5, //should be last so that it can be ignored |
+ tag: 3, //very quick test |
+ attribute: 1, //can be faster than class |
+ pseudo: 0, //can be pretty expensive (especially :has) |
+ |
+ //everything else shouldn't be moved |
+ descendant: -1, |
+ child: -1, |
+ sibling: -1, |
+ adjacent: -1 |
+}; |
+ |
+function sortByProcedure(arr){ |
+ //TODO sort individual attribute selectors |
+ for(var i = 1; i < arr.length; i++){ |
+ var procNew = procedure[arr[i].type]; |
+ |
+ if(procNew !== -1){ |
+ for(var j = i - 1; j >= 0 && procNew < procedure[arr[j].type]; j--){ |
+ var tmp = arr[j + 1]; |
+ arr[j + 1] = arr[j]; |
+ arr[j] = tmp; |
+ } |
+ } |
+ } |
+ return arr; |
+} |