From c79700ef1a09d4e17449f530293238984c7bf07c Mon Sep 17 00:00:00 2001 From: Ryan Kennedy Date: Tue, 17 Jul 2018 19:18:34 -0400 Subject: [PATCH] fix: correctly understand variables with question marks Fixes #77 --- src/lexical.js | 2 +- test/syntax.js | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/lexical.js b/src/lexical.js index e3e7259c8..a263ad9e4 100644 --- a/src/lexical.js +++ b/src/lexical.js @@ -10,7 +10,7 @@ var number = /-?\d+\.?\d*|\.?\d+/ var bool = /true|false/ // peoperty access -var identifier = /[\w-]+/ +var identifier = /[\w-]+[?]?/ var subscript = new RegExp(`\\[(?:${quoted.source}|[\\w-\\.]+)\\]`) var literal = new RegExp(`(?:${quoted.source}|${bool.source}|${number.source})`) var variable = new RegExp(`${identifier.source}(?:\\.${identifier.source}|${subscript.source})*`) diff --git a/test/syntax.js b/test/syntax.js index bb2bbc765..18d488bee 100644 --- a/test/syntax.js +++ b/test/syntax.js @@ -17,7 +17,8 @@ describe('expression', function () { empty: '', x: 'XXX', y: undefined, - z: null + z: null, + 'has_value?': true }) }) @@ -30,6 +31,7 @@ describe('expression', function () { it('should eval variables', function () { expect(evalValue('23', scope)).to.equal(23) expect(evalValue('one', scope)).to.equal(1) + expect(evalValue('has_value?', scope)).to.equal(true) expect(evalValue('x', scope)).to.equal('XXX') })