diff --git a/README.md b/README.md index c3e0e924..c2f3d8a9 100644 --- a/README.md +++ b/README.md @@ -260,19 +260,19 @@ One line ifs If you need a more concise conditional to control which attributes are applied to a given element, then use this syntax: ```html -

One line if.

+

One line if.

``` -In that structure, the attribute `if-something` checks to see if the variable `something` is present. If so, the class delcared in the `true` attribute is written to the element, resulting in the following output: +In that structure, the attribute `if-something` checks to see if the variable `something` is truthy. This means it will check for either variable presence in the model or the boolean value `true`. If so, the class delcared in the `true` attribute is written to the element, resulting in the following output: ```html -

One line if.

+

One line if.

``` -If not, the class declared in the `false` attribute is written to the element, resulting in the following output: +If not, this will check for non-presence in the model or the boolean value `false`. If so, the class declared in the `false` attribute is written to the element, resulting in the following output: ```html -

One line if.

+ ``` Like the `` tag you can check for both the presence of a variable as well as its value. To check the value of a variable, use this syntax: diff --git a/conditionals.js b/conditionals.js index ecbda54d..98580c1c 100644 --- a/conditionals.js +++ b/conditionals.js @@ -314,7 +314,10 @@ function parseOneLineIf (charList, model) { return insertValue(charList, condition.false.split('').reverse().join(''), startIndex, endIndex) } } else { // There is no value to compare against - if (varVal && varVal[0] === '{' && varVal[varVal.length - 1] === '}') { + // Cases for when there isn't a condition.varLiteral value + // case 1: `false` literal or variable not present in model (resolving to var name within brackets, ex: {notInModel}) -> insert false condition + // case 2: non-empty string present in model or `true` literal -> insert true condition + if (varVal === false || (varVal[0] === '{' && varVal[varVal.length - 1] === '}')) { return insertValue(charList, condition.false.split('').reverse().join(''), startIndex, endIndex) } else { return insertValue(charList, condition.true.split('').reverse().join(''), startIndex, endIndex) diff --git a/test/conditionals.js b/test/conditionals.js index b3787d99..5dcd115c 100644 --- a/test/conditionals.js +++ b/test/conditionals.js @@ -187,7 +187,7 @@ describe('Conditionals', function () { done() }) - it.skip('should evaluate one line if "if-somethingFalse" as false (conditionals/oneLineIfBooleanValue.html)', function (done) { + it('should evaluate one line if "if-somethingFalse" as false (conditionals/oneLineIfBooleanValue.html)', function (done) { assert.equalIgnoreSpaces(teddy.render('conditionals/oneLineIfBooleanValue.html', model), '

') done() })