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') })