diff --git a/parser.jison b/parser.jison index d7749e8..0a3d943 100644 --- a/parser.jison +++ b/parser.jison @@ -39,6 +39,7 @@ (calc) return 'NESTED_CALC'; (var\([^\)]*\)) return 'CSS_VAR'; +([a-z]+\([a-z0-9-]+\)) return 'UNKNOW_FUNCTION' ([a-z]+) return 'PREFIX'; "(" return 'LPAREN'; @@ -72,6 +73,7 @@ expression | css_variable { $$ = $1; } | css_value { $$ = $1; } | value { $$ = $1; } + | UNKNOW_FUNCTION { $$ = { type: 'Unknow', value: $1 }; } ; value diff --git a/src/__tests__/index.js b/src/__tests__/index.js index 1937587..e1c30af 100644 --- a/src/__tests__/index.js +++ b/src/__tests__/index.js @@ -324,3 +324,10 @@ test( 'calc( (1em - calc( 10px + 1em)) / 2)', '-5px' ) + +test( + 'should not throw an exception when unknow function exist in calc', + testFixture, + 'calc(constant(safe-area-inset-left) + 100px - 50px)', + 'calc(constant(safe-area-inset-left) + 50px)' +) diff --git a/src/lib/stringifier.js b/src/lib/stringifier.js index c7b14f0..ab604ec 100644 --- a/src/lib/stringifier.js +++ b/src/lib/stringifier.js @@ -36,6 +36,7 @@ function stringify(node, prec) { case "Value": return round(node.value, prec) case 'CssVariable': + case 'Unknow': return node.value default: return round(node.value, prec) + node.unit