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

Side by Side Diff: node_modules/vulcanize/node_modules/cssom/lib/CSSStyleRule.js

Issue 877193002: Upgrade vulcanize to 0.7.6. (Closed) Base URL: https://chromium.googlesource.com/infra/third_party/npm_modules.git@master
Patch Set: Created 5 years, 10 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 unified diff | Download patch
OLDNEW
(Empty)
1 //.CommonJS
2 var CSSOM = {
3 CSSStyleDeclaration: require("./CSSStyleDeclaration").CSSStyleDeclaratio n,
4 CSSRule: require("./CSSRule").CSSRule
5 };
6 ///CommonJS
7
8
9 /**
10 * @constructor
11 * @see http://dev.w3.org/csswg/cssom/#cssstylerule
12 * @see http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleRule
13 */
14 CSSOM.CSSStyleRule = function CSSStyleRule() {
15 CSSOM.CSSRule.call(this);
16 this.selectorText = "";
17 this.style = new CSSOM.CSSStyleDeclaration;
18 this.style.parentRule = this;
19 };
20
21 CSSOM.CSSStyleRule.prototype = new CSSOM.CSSRule;
22 CSSOM.CSSStyleRule.prototype.constructor = CSSOM.CSSStyleRule;
23 CSSOM.CSSStyleRule.prototype.type = 1;
24
25 CSSOM.CSSStyleRule.prototype.__defineGetter__("cssText", function() {
26 var text;
27 if (this.selectorText) {
28 text = this.selectorText + " {" + this.style.cssText + "}";
29 } else {
30 text = "";
31 }
32 return text;
33 });
34
35 CSSOM.CSSStyleRule.prototype.__defineSetter__("cssText", function(cssText) {
36 var rule = CSSOM.CSSStyleRule.parse(cssText);
37 this.style = rule.style;
38 this.selectorText = rule.selectorText;
39 });
40
41
42 /**
43 * NON-STANDARD
44 * lightweight version of parse.js.
45 * @param {string} ruleText
46 * @return CSSStyleRule
47 */
48 CSSOM.CSSStyleRule.parse = function(ruleText) {
49 var i = 0;
50 var state = "selector";
51 var index;
52 var j = i;
53 var buffer = "";
54
55 var SIGNIFICANT_WHITESPACE = {
56 "selector": true,
57 "value": true
58 };
59
60 var styleRule = new CSSOM.CSSStyleRule;
61 var selector, name, value, priority="";
62
63 for (var character; character = ruleText.charAt(i); i++) {
64
65 switch (character) {
66
67 case " ":
68 case "\t":
69 case "\r":
70 case "\n":
71 case "\f":
72 if (SIGNIFICANT_WHITESPACE[state]) {
73 // Squash 2 or more white-spaces in the row into 1
74 switch (ruleText.charAt(i - 1)) {
75 case " ":
76 case "\t":
77 case "\r":
78 case "\n":
79 case "\f":
80 break;
81 default:
82 buffer += " ";
83 break;
84 }
85 }
86 break;
87
88 // String
89 case '"':
90 j = i + 1;
91 index = ruleText.indexOf('"', j) + 1;
92 if (!index) {
93 throw '" is missing';
94 }
95 buffer += ruleText.slice(i, index);
96 i = index - 1;
97 break;
98
99 case "'":
100 j = i + 1;
101 index = ruleText.indexOf("'", j) + 1;
102 if (!index) {
103 throw "' is missing";
104 }
105 buffer += ruleText.slice(i, index);
106 i = index - 1;
107 break;
108
109 // Comment
110 case "/":
111 if (ruleText.charAt(i + 1) === "*") {
112 i += 2;
113 index = ruleText.indexOf("*/", i);
114 if (index === -1) {
115 throw new SyntaxError("Missing */");
116 } else {
117 i = index + 1;
118 }
119 } else {
120 buffer += character;
121 }
122 break;
123
124 case "{":
125 if (state === "selector") {
126 styleRule.selectorText = buffer.trim();
127 buffer = "";
128 state = "name";
129 }
130 break;
131
132 case ":":
133 if (state === "name") {
134 name = buffer.trim();
135 buffer = "";
136 state = "value";
137 } else {
138 buffer += character;
139 }
140 break;
141
142 case "!":
143 if (state === "value" && ruleText.indexOf("!important", i) === i) {
144 priority = "important";
145 i += "important".length;
146 } else {
147 buffer += character;
148 }
149 break;
150
151 case ";":
152 if (state === "value") {
153 styleRule.style.setProperty(name, buffer.trim(), priority);
154 priority = "";
155 buffer = "";
156 state = "name";
157 } else {
158 buffer += character;
159 }
160 break;
161
162 case "}":
163 if (state === "value") {
164 styleRule.style.setProperty(name, buffer.trim(), priority);
165 priority = "";
166 buffer = "";
167 } else if (state === "name") {
168 break;
169 } else {
170 buffer += character;
171 }
172 state = "selector";
173 break;
174
175 default:
176 buffer += character;
177 break;
178
179 }
180 }
181
182 return styleRule;
183
184 };
185
186
187 //.CommonJS
188 exports.CSSStyleRule = CSSOM.CSSStyleRule;
189 ///CommonJS
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698