From 1a36e39b62b4a1a43e336b27fccbba48fbbe0617 Mon Sep 17 00:00:00 2001 From: Evan You Date: Wed, 15 Apr 2015 13:37:50 -0400 Subject: [PATCH] allow use of global Date & new keyword inside expressions (fix #784) --- src/parsers/expression.js | 4 ++-- test/unit/specs/parsers/expression_spec.js | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/parsers/expression.js b/src/parsers/expression.js index 6df3a90f1..0213155d6 100644 --- a/src/parsers/expression.js +++ b/src/parsers/expression.js @@ -4,7 +4,7 @@ var Cache = require('../cache') var expressionCache = new Cache(1000) var keywords = - 'Math,break,case,catch,continue,debugger,default,' + + 'Math,Date,break,case,catch,continue,debugger,default,' + 'delete,do,else,false,finally,for,function,if,in,' + 'instanceof,new,null,return,switch,this,throw,true,try,' + 'typeof,var,void,while,with,undefined,abstract,boolean,' + @@ -16,7 +16,7 @@ var keywords = var wsRE = /\s/g var newlineRE = /\n/g -var saveRE = /[\{,]\s*[\w\$_]+\s*:|('[^']*'|"[^"]*")/g +var saveRE = /[\{,]\s*[\w\$_]+\s*:|('[^']*'|"[^"]*")|new /g var restoreRE = /"(\d+)"/g var pathTestRE = /^[A-Za-z_$][\w$]*(\.[A-Za-z_$][\w$]*|\['.*?'\]|\[".*?"\]|\[\d+\])*$/ var pathReplaceRE = /[^\w$\.]([A-Za-z_$][\w$]*(\.[A-Za-z_$][\w$]*|\['.*?'\]|\[".*?"\])*)/g diff --git a/test/unit/specs/parsers/expression_spec.js b/test/unit/specs/parsers/expression_spec.js index 09bc93204..ac8b35d84 100644 --- a/test/unit/specs/parsers/expression_spec.js +++ b/test/unit/specs/parsers/expression_spec.js @@ -197,6 +197,13 @@ var testCases = [ }, expected: true, paths: [] + }, + { + // Date global + exp: 'Date.now() > new Date("2000-01-01")', + scope: {}, + expected: true, + paths: [] } ]