Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(449)

Unified Diff: tools/vulcanize/node_modules/vulcanize/node_modules/cheerio/node_modules/cheerio-select/node_modules/CSSselect/lib/attributes.js

Issue 125733002: Add vulcanize to tools. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/vulcanize/node_modules/vulcanize/node_modules/cheerio/node_modules/cheerio-select/node_modules/CSSselect/lib/attributes.js
diff --git a/tools/vulcanize/node_modules/vulcanize/node_modules/cheerio/node_modules/cheerio-select/node_modules/CSSselect/lib/attributes.js b/tools/vulcanize/node_modules/vulcanize/node_modules/cheerio/node_modules/cheerio-select/node_modules/CSSselect/lib/attributes.js
new file mode 100644
index 0000000000000000000000000000000000000000..140194936bd5cc50d93c633b9235fa712b42cff5
--- /dev/null
+++ b/tools/vulcanize/node_modules/vulcanize/node_modules/cheerio/node_modules/cheerio-select/node_modules/CSSselect/lib/attributes.js
@@ -0,0 +1,178 @@
+var DomUtils = require("domutils"),
+ hasAttrib = DomUtils.hasAttrib,
+ getAttributeValue = DomUtils.getAttributeValue,
+ falseFunc = require("./basefunctions.js").falseFunc;
+
+//https://github.com/slevithan/XRegExp/blob/master/src/xregexp.js#L469
+var reChars = /[-[\]{}()*+?.,\\^$|#\s]/g;
+
+/*
+ attribute selectors
+*/
+
+var attributeRules = {
+ __proto__: null,
+ equals: function(next, data){
+ var name = data.name,
+ value = data.value;
+
+ if(data.ignoreCase){
+ value = value.toLowerCase();
+
+ return function(elem){
+ var attr = getAttributeValue(elem, name);
+ return attr != null && attr.toLowerCase() === value && next(elem);
+ };
+ }
+
+ return function(elem){
+ return getAttributeValue(elem, name) === value && next(elem);
+ };
+ },
+ hyphen: function(next, data){
+ var name = data.name,
+ value = data.value,
+ len = value.length;
+
+ if(data.ignoreCase){
+ value = value.toLowerCase();
+
+ return function(elem){
+ var attr = getAttributeValue(elem, name);
+ return attr != null &&
+ (attr.length === len || attr.charAt(len) === "-") &&
+ attr.substr(0, len).toLowerCase() === value &&
+ next(elem);
+ };
+ }
+
+ return function(elem){
+ var attr = getAttributeValue(elem, name);
+ return attr != null &&
+ attr.substr(0, len) === value &&
+ (attr.length === len || attr.charAt(len) === "-") &&
+ next(elem);
+ };
+ },
+ element: function(next, data){
+ var name = data.name,
+ value = data.value;
+
+ if(/\s/.test(value)){
+ return falseFunc;
+ }
+
+ value = value.replace(reChars, "\\$&");
+
+ var pattern = "(?:^|\\s)" + value + "(?:$|\\s)",
+ flags = data.ignoreCase ? "i" : "",
+ regex = new RegExp(pattern, flags);
+
+ return function(elem){
+ var attr = getAttributeValue(elem, name);
+ return attr != null && regex.test(attr) && next(elem);
+ };
+ },
+ exists: function(next, data){
+ var name = data.name;
+ return function(elem){
+ return hasAttrib(elem, name) && next(elem);
+ };
+ },
+ start: function(next, data){
+ var name = data.name,
+ value = data.value,
+ len = value.length;
+
+ if(len === 0){
+ return falseFunc;
+ }
+
+ if(data.ignoreCase){
+ value = value.toLowerCase();
+
+ return function(elem){
+ var attr = getAttributeValue(elem, name);
+ return attr != null && attr.substr(0, len).toLowerCase() === value && next(elem);
+ };
+ }
+
+ return function(elem){
+ var attr = getAttributeValue(elem, name);
+ return attr != null && attr.substr(0, len) === value && next(elem);
+ };
+ },
+ end: function(next, data){
+ var name = data.name,
+ value = data.value,
+ len = -value.length;
+
+ if(len === 0){
+ return falseFunc;
+ }
+
+ if(data.ignoreCase){
+ value = value.toLowerCase();
+
+ return function(elem){
+ var attr = getAttributeValue(elem, name);
+ return attr != null && attr.substr(len).toLowerCase() === value && next(elem);
+ };
+ }
+
+ return function(elem){
+ var attr = getAttributeValue(elem, name);
+ return attr != null && attr.substr(len) === value && next(elem);
+ };
+ },
+ any: function(next, data){
+ var name = data.name,
+ value = data.value;
+
+ if(value === ""){
+ return falseFunc;
+ }
+
+ if(data.ignoreCase){
+ var regex = new RegExp(value.replace(reChars, "\\$&"), "i");
+
+ return function(elem){
+ var attr = getAttributeValue(elem, name);
+ return attr != null && regex.test(attr) && next(elem);
+ };
+ }
+
+ return function(elem){
+ var attr = getAttributeValue(elem, name);
+ return attr != null && attr.indexOf(value) >= 0 && next(elem);
+ };
+ },
+ not: function(next, data){
+ var name = data.name,
+ value = data.value;
+
+ if(value === ""){
+ return function(elem){
+ return !!getAttributeValue(elem, name) && next(elem);
+ };
+ } else if(data.ignoreCase){
+ value = value.toLowerCase();
+
+ return function(elem){
+ var attr = getAttributeValue(elem, name);
+ return attr != null && attr.toLowerCase() !== value && next(elem);
+ };
+ }
+
+ return function(elem){
+ return getAttributeValue(elem, name) !== value && next(elem);
+ };
+ }
+};
+
+module.exports = {
+ compile: function(next, data){
+ return attributeRules[data.action](next, data);
+ },
+ rules: attributeRules
+};

Powered by Google App Engine
This is Rietveld 408576698