Index: node_modules/vulcanize/node_modules/cssom/lib/CSSStyleRule.js |
diff --git a/node_modules/vulcanize/node_modules/cssom/lib/CSSStyleRule.js b/node_modules/vulcanize/node_modules/cssom/lib/CSSStyleRule.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4224397eb42ec2594d50d9158d51e943c8601879 |
--- /dev/null |
+++ b/node_modules/vulcanize/node_modules/cssom/lib/CSSStyleRule.js |
@@ -0,0 +1,189 @@ |
+//.CommonJS |
+var CSSOM = { |
+ CSSStyleDeclaration: require("./CSSStyleDeclaration").CSSStyleDeclaration, |
+ CSSRule: require("./CSSRule").CSSRule |
+}; |
+///CommonJS |
+ |
+ |
+/** |
+ * @constructor |
+ * @see http://dev.w3.org/csswg/cssom/#cssstylerule |
+ * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleRule |
+ */ |
+CSSOM.CSSStyleRule = function CSSStyleRule() { |
+ CSSOM.CSSRule.call(this); |
+ this.selectorText = ""; |
+ this.style = new CSSOM.CSSStyleDeclaration; |
+ this.style.parentRule = this; |
+}; |
+ |
+CSSOM.CSSStyleRule.prototype = new CSSOM.CSSRule; |
+CSSOM.CSSStyleRule.prototype.constructor = CSSOM.CSSStyleRule; |
+CSSOM.CSSStyleRule.prototype.type = 1; |
+ |
+CSSOM.CSSStyleRule.prototype.__defineGetter__("cssText", function() { |
+ var text; |
+ if (this.selectorText) { |
+ text = this.selectorText + " {" + this.style.cssText + "}"; |
+ } else { |
+ text = ""; |
+ } |
+ return text; |
+}); |
+ |
+CSSOM.CSSStyleRule.prototype.__defineSetter__("cssText", function(cssText) { |
+ var rule = CSSOM.CSSStyleRule.parse(cssText); |
+ this.style = rule.style; |
+ this.selectorText = rule.selectorText; |
+}); |
+ |
+ |
+/** |
+ * NON-STANDARD |
+ * lightweight version of parse.js. |
+ * @param {string} ruleText |
+ * @return CSSStyleRule |
+ */ |
+CSSOM.CSSStyleRule.parse = function(ruleText) { |
+ var i = 0; |
+ var state = "selector"; |
+ var index; |
+ var j = i; |
+ var buffer = ""; |
+ |
+ var SIGNIFICANT_WHITESPACE = { |
+ "selector": true, |
+ "value": true |
+ }; |
+ |
+ var styleRule = new CSSOM.CSSStyleRule; |
+ var selector, name, value, priority=""; |
+ |
+ for (var character; character = ruleText.charAt(i); i++) { |
+ |
+ switch (character) { |
+ |
+ case " ": |
+ case "\t": |
+ case "\r": |
+ case "\n": |
+ case "\f": |
+ if (SIGNIFICANT_WHITESPACE[state]) { |
+ // Squash 2 or more white-spaces in the row into 1 |
+ switch (ruleText.charAt(i - 1)) { |
+ case " ": |
+ case "\t": |
+ case "\r": |
+ case "\n": |
+ case "\f": |
+ break; |
+ default: |
+ buffer += " "; |
+ break; |
+ } |
+ } |
+ break; |
+ |
+ // String |
+ case '"': |
+ j = i + 1; |
+ index = ruleText.indexOf('"', j) + 1; |
+ if (!index) { |
+ throw '" is missing'; |
+ } |
+ buffer += ruleText.slice(i, index); |
+ i = index - 1; |
+ break; |
+ |
+ case "'": |
+ j = i + 1; |
+ index = ruleText.indexOf("'", j) + 1; |
+ if (!index) { |
+ throw "' is missing"; |
+ } |
+ buffer += ruleText.slice(i, index); |
+ i = index - 1; |
+ break; |
+ |
+ // Comment |
+ case "/": |
+ if (ruleText.charAt(i + 1) === "*") { |
+ i += 2; |
+ index = ruleText.indexOf("*/", i); |
+ if (index === -1) { |
+ throw new SyntaxError("Missing */"); |
+ } else { |
+ i = index + 1; |
+ } |
+ } else { |
+ buffer += character; |
+ } |
+ break; |
+ |
+ case "{": |
+ if (state === "selector") { |
+ styleRule.selectorText = buffer.trim(); |
+ buffer = ""; |
+ state = "name"; |
+ } |
+ break; |
+ |
+ case ":": |
+ if (state === "name") { |
+ name = buffer.trim(); |
+ buffer = ""; |
+ state = "value"; |
+ } else { |
+ buffer += character; |
+ } |
+ break; |
+ |
+ case "!": |
+ if (state === "value" && ruleText.indexOf("!important", i) === i) { |
+ priority = "important"; |
+ i += "important".length; |
+ } else { |
+ buffer += character; |
+ } |
+ break; |
+ |
+ case ";": |
+ if (state === "value") { |
+ styleRule.style.setProperty(name, buffer.trim(), priority); |
+ priority = ""; |
+ buffer = ""; |
+ state = "name"; |
+ } else { |
+ buffer += character; |
+ } |
+ break; |
+ |
+ case "}": |
+ if (state === "value") { |
+ styleRule.style.setProperty(name, buffer.trim(), priority); |
+ priority = ""; |
+ buffer = ""; |
+ } else if (state === "name") { |
+ break; |
+ } else { |
+ buffer += character; |
+ } |
+ state = "selector"; |
+ break; |
+ |
+ default: |
+ buffer += character; |
+ break; |
+ |
+ } |
+ } |
+ |
+ return styleRule; |
+ |
+}; |
+ |
+ |
+//.CommonJS |
+exports.CSSStyleRule = CSSOM.CSSStyleRule; |
+///CommonJS |