summaryrefslogtreecommitdiff
path: root/school/node_modules/cssstyle/node_modules/cssom/lib/CSSStyleRule.js
diff options
context:
space:
mode:
Diffstat (limited to 'school/node_modules/cssstyle/node_modules/cssom/lib/CSSStyleRule.js')
-rw-r--r--school/node_modules/cssstyle/node_modules/cssom/lib/CSSStyleRule.js190
1 files changed, 190 insertions, 0 deletions
diff --git a/school/node_modules/cssstyle/node_modules/cssom/lib/CSSStyleRule.js b/school/node_modules/cssstyle/node_modules/cssom/lib/CSSStyleRule.js
new file mode 100644
index 0000000..630b3f8
--- /dev/null
+++ b/school/node_modules/cssstyle/node_modules/cssom/lib/CSSStyleRule.js
@@ -0,0 +1,190 @@
+//.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;
+
+Object.defineProperty(CSSOM.CSSStyleRule.prototype, "cssText", {
+ get: function() {
+ var text;
+ if (this.selectorText) {
+ text = this.selectorText + " {" + this.style.cssText + "}";
+ } else {
+ text = "";
+ }
+ return text;
+ },
+ set: 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 name, 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