@@ -18,6 +18,7 @@ exports.TYPES = {
1818 ANGLE : 8 ,
1919 KEYWORD : 9 ,
2020 NULL_OR_EMPTY_STR : 10 ,
21+ CALC : 11 ,
2122} ;
2223
2324// rough regular expressions
@@ -30,6 +31,7 @@ var stringRegEx = /^("[^"]*"|'[^']*')$/;
3031var colorRegEx1 = / ^ # ( [ 0 - 9 a - f A - F ] { 3 , 4 } ) { 1 , 2 } $ / ;
3132var colorRegEx2 = / ^ r g b \( ( [ ^ ) ] * ) \) $ / ;
3233var colorRegEx3 = / ^ r g b a \( ( [ ^ ) ] * ) \) $ / ;
34+ var calcRegEx = / ^ c a l c \( ( [ ^ ) ] * ) \) $ / ;
3335var colorRegEx4 = / ^ h s l a ? \( \s * ( - ? \d + | - ? \d * .\d + ) \s * , \s * ( - ? \d + | - ? \d * .\d + ) % \s * , \s * ( - ? \d + | - ? \d * .\d + ) % \s * ( , \s * ( - ? \d + | - ? \d * .\d + ) \s * ) ? \) / ;
3436var angleRegEx = / ^ ( [ - + ] ? [ 0 - 9 ] * \. ? [ 0 - 9 ] + ) ( d e g | g r a d | r a d ) $ / ;
3537
@@ -61,6 +63,9 @@ exports.valueType = function valueType(val) {
6163 if ( urlRegEx . test ( val ) ) {
6264 return exports . TYPES . URL ;
6365 }
66+ if ( calcRegEx . test ( val ) ) {
67+ return exports . TYPES . CALC ;
68+ }
6469 if ( stringRegEx . test ( val ) ) {
6570 return exports . TYPES . STRING ;
6671 }
@@ -70,6 +75,7 @@ exports.valueType = function valueType(val) {
7075 if ( colorRegEx1 . test ( val ) ) {
7176 return exports . TYPES . COLOR ;
7277 }
78+
7379 var res = colorRegEx2 . exec ( val ) ;
7480 var parts ;
7581 if ( res !== null ) {
@@ -201,6 +207,11 @@ exports.parsePercent = function parsePercent(val) {
201207
202208// either a length or a percent
203209exports . parseMeasurement = function parseMeasurement ( val ) {
210+ var type = exports . valueType ( val ) ;
211+ if ( type === exports . TYPES . CALC ) {
212+ return val ;
213+ }
214+
204215 var length = exports . parseLength ( val ) ;
205216 if ( length !== undefined ) {
206217 return length ;
0 commit comments