@@ -18,6 +18,7 @@ exports.TYPES = {
18
18
ANGLE : 8 ,
19
19
KEYWORD : 9 ,
20
20
NULL_OR_EMPTY_STR : 10 ,
21
+ CALC : 11 ,
21
22
} ;
22
23
23
24
// rough regular expressions
@@ -30,6 +31,7 @@ var stringRegEx = /^("[^"]*"|'[^']*')$/;
30
31
var colorRegEx1 = / ^ # ( [ 0 - 9 a - f A - F ] { 3 , 4 } ) { 1 , 2 } $ / ;
31
32
var colorRegEx2 = / ^ r g b \( ( [ ^ ) ] * ) \) $ / ;
32
33
var colorRegEx3 = / ^ r g b a \( ( [ ^ ) ] * ) \) $ / ;
34
+ var calcRegEx = / ^ c a l c \( ( [ ^ ) ] * ) \) $ / ;
33
35
var 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 * ) ? \) / ;
34
36
var angleRegEx = / ^ ( [ - + ] ? [ 0 - 9 ] * \. ? [ 0 - 9 ] + ) ( d e g | g r a d | r a d ) $ / ;
35
37
@@ -61,6 +63,9 @@ exports.valueType = function valueType(val) {
61
63
if ( urlRegEx . test ( val ) ) {
62
64
return exports . TYPES . URL ;
63
65
}
66
+ if ( calcRegEx . test ( val ) ) {
67
+ return exports . TYPES . CALC ;
68
+ }
64
69
if ( stringRegEx . test ( val ) ) {
65
70
return exports . TYPES . STRING ;
66
71
}
@@ -70,6 +75,7 @@ exports.valueType = function valueType(val) {
70
75
if ( colorRegEx1 . test ( val ) ) {
71
76
return exports . TYPES . COLOR ;
72
77
}
78
+
73
79
var res = colorRegEx2 . exec ( val ) ;
74
80
var parts ;
75
81
if ( res !== null ) {
@@ -201,6 +207,11 @@ exports.parsePercent = function parsePercent(val) {
201
207
202
208
// either a length or a percent
203
209
exports . parseMeasurement = function parseMeasurement ( val ) {
210
+ var type = exports . valueType ( val ) ;
211
+ if ( type === exports . TYPES . CALC ) {
212
+ return val ;
213
+ }
214
+
204
215
var length = exports . parseLength ( val ) ;
205
216
if ( length !== undefined ) {
206
217
return length ;
0 commit comments