Skip to content

Commit

Permalink
added support for calc wherever <length> is expected
Browse files Browse the repository at this point in the history
  • Loading branch information
Merrifield, Jay authored and fracmak committed Nov 14, 2012
1 parent 80f795c commit 1845473
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 3 deletions.
4 changes: 2 additions & 2 deletions src/css/Parser.js
Expand Up @@ -712,14 +712,14 @@ Parser.prototype = function(){

/*
* operator
* : '/' S* | ',' S* | /( empty )/
* : '/' S* | ',' S* | '*' S* | '-' S* /( empty )/
* ;
*/

var tokenStream = this._tokenStream,
token = null;

if (tokenStream.match([Tokens.SLASH, Tokens.COMMA])){
if (tokenStream.match([Tokens.SLASH, Tokens.COMMA, Tokens.STAR, Tokens.MINUS])){
token = tokenStream.token();
this._readWhitespace();
}
Expand Down
6 changes: 5 additions & 1 deletion src/css/ValidationTypes.js
Expand Up @@ -121,7 +121,11 @@ var ValidationTypes = {
},

"<length>": function(part){
return part.type == "length" || part.type == "number" || part.type == "integer" || part == "0";
if (part.type == "function" && /^(?:\-(?:ms|moz|o|webkit)\-)?calc/i.test(part)){
return true;
}else{
return part.type == "length" || part.type == "number" || part.type == "integer" || part == "0";
}
},

"<color>": function(part){
Expand Down
1 change: 1 addition & 0 deletions tests/css/CSSTokensTests.htm
Expand Up @@ -420,6 +420,7 @@ <h1>CSS Tokens Tests</h1>
//regular CSS functions
"rgb(255,0,1)" : [CSSTokens.FUNCTION, CSSTokens.NUMBER, CSSTokens.COMMA, CSSTokens.NUMBER, CSSTokens.COMMA, CSSTokens.NUMBER, CSSTokens.RPAREN],
"counter(par-num,upper-roman)" : [CSSTokens.FUNCTION, CSSTokens.IDENT, CSSTokens.COMMA, CSSTokens.IDENT, CSSTokens.RPAREN],
"calc(100% - 5px)" : [CSSTokens.FUNCTION, CSSTokens.PERCENTAGE, CSSTokens.S, CSSTokens.MINUS, CSSTokens.S, CSSTokens.LENGTH, CSSTokens.RPAREN],

//old-style IE filters - interpreted as bunch of tokens
"alpha(opacity=50)" : [CSSTokens.FUNCTION, CSSTokens.IDENT, CSSTokens.EQUALS, CSSTokens.NUMBER, CSSTokens.RPAREN],
Expand Down
1 change: 1 addition & 0 deletions tests/css/TokenStream.js
Expand Up @@ -405,6 +405,7 @@
//regular CSS functions
"rgb(255,0,1)" : [CSSTokens.FUNCTION, CSSTokens.NUMBER, CSSTokens.COMMA, CSSTokens.NUMBER, CSSTokens.COMMA, CSSTokens.NUMBER, CSSTokens.RPAREN],
"counter(par-num,upper-roman)" : [CSSTokens.FUNCTION, CSSTokens.IDENT, CSSTokens.COMMA, CSSTokens.IDENT, CSSTokens.RPAREN],
"calc(100% - 5px)" : [CSSTokens.FUNCTION, CSSTokens.PERCENTAGE, CSSTokens.S, CSSTokens.MINUS, CSSTokens.S, CSSTokens.LENGTH, CSSTokens.RPAREN],

//old-style IE filters - interpreted as bunch of tokens
"alpha(opacity=50)" : [CSSTokens.FUNCTION, CSSTokens.IDENT, CSSTokens.EQUALS, CSSTokens.NUMBER, CSSTokens.RPAREN],
Expand Down
4 changes: 4 additions & 0 deletions tests/css/Validation.js
Expand Up @@ -492,6 +492,10 @@
valid: [
"1px",
"1%",
"calc(100% - 5px)",
"calc(100% - 1em)",
"calc(100%/6)",
"calc(10%*6)",
"inherit"
],

Expand Down

0 comments on commit 1845473

Please sign in to comment.