Skip to content

Commit d88db21

Browse files
committed
add CSSValueExpression.js
1 parent 982da60 commit d88db21

File tree

1 file changed

+24
-10
lines changed

1 file changed

+24
-10
lines changed

lib/parse.js

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -219,16 +219,29 @@ CSSOM.parse = function parse(token) {
219219
break;
220220

221221
case '(':
222-
if (state === 'value') {
223-
index = token.indexOf(')', i + 1);
224-
if (index === -1) {
225-
parseError('Unmatched "("');
226-
}
227-
buffer += token.slice(i, index + 1);
228-
i = index;
229-
} else {
230-
buffer += character;
231-
}
222+
if (state === 'value') {
223+
// ie css expression mode
224+
if (buffer.trim() == 'expression') {
225+
var info = new CSSOM.CSSValueExpression(token, i).parse();
226+
227+
if (info.error) {
228+
parseError(info.error);
229+
} else {
230+
buffer += info.expression;
231+
i = info.idx;
232+
}
233+
} else {
234+
index = token.indexOf(')', i + 1);
235+
if (index === -1) {
236+
parseError('Unmatched "("');
237+
}
238+
buffer += token.slice(i, index + 1);
239+
i = index;
240+
}
241+
} else {
242+
buffer += character;
243+
}
244+
232245
break;
233246

234247
case "!":
@@ -341,4 +354,5 @@ CSSOM.CSSFontFaceRule = require("./CSSFontFaceRule").CSSFontFaceRule;
341354
CSSOM.CSSStyleDeclaration = require('./CSSStyleDeclaration').CSSStyleDeclaration;
342355
CSSOM.CSSKeyframeRule = require('./CSSKeyframeRule').CSSKeyframeRule;
343356
CSSOM.CSSKeyframesRule = require('./CSSKeyframesRule').CSSKeyframesRule;
357+
CSSOM.CSSValueExpression = require('./CSSValueExpression').CSSValueExpression;
344358
///CommonJS

0 commit comments

Comments
 (0)