diff --git a/src/twig.expression.operator.js b/src/twig.expression.operator.js index 027382e1..a4b3c818 100644 --- a/src/twig.expression.operator.js +++ b/src/twig.expression.operator.js @@ -219,7 +219,7 @@ module.exports = function (Twig) { break; case '?': - if (a === undefined) { + if (a === undefined && b !== undefined) { // An extended ternary. a = b; b = c; diff --git a/test/test.expressions.operators.js b/test/test.expressions.operators.js index 0840e3f1..b96fca64 100644 --- a/test/test.expressions.operators.js +++ b/test/test.expressions.operators.js @@ -62,6 +62,19 @@ describe('Twig.js Expression Operators ->', function () { outputT.should.equal('one'); outputF.should.equal('two'); }); + + it('should support the extended ternary operator for undefined arguments', function () { + const testTemplate = twig({data: '{{ test1 ? test1 : test2 }}'}); + const outputA = testTemplate.render({test2: 'text 2'}); + const outputB = testTemplate.render({test1: false}); + const outputC = testTemplate.render({}); + const outputD = testTemplate.render({test1: 'text 1'}); + + outputA.should.equal('text 2'); + outputB.should.equal(''); + outputC.should.equal(''); + outputD.should.equal('text 1'); + }); }); describe('?? ->', function () {