From 357d35d19a28fcb5298020d124021104a826a17e Mon Sep 17 00:00:00 2001 From: Emily Stark Date: Fri, 22 Mar 2013 17:50:38 -0400 Subject: [PATCH 1/2] Add tests for issue #770 --- packages/templating/templating_tests.html | 8 ++++++++ packages/templating/templating_tests.js | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/packages/templating/templating_tests.html b/packages/templating/templating_tests.html index 2ad6fae73a..fd7a4cd577 100644 --- a/packages/templating/templating_tests.html +++ b/packages/templating/templating_tests.html @@ -355,3 +355,11 @@ + + + diff --git a/packages/templating/templating_tests.js b/packages/templating/templating_tests.js index 40ad9dc4cc..70a5fbc839 100644 --- a/packages/templating/templating_tests.js +++ b/packages/templating/templating_tests.js @@ -1092,3 +1092,10 @@ Tinytest.add('templating - each falsy Issue #801', function (test) { var frag = Meteor.render(Template.test_template_issue801); test.equal(canonicalizeHtml(DomUtils.fragmentToHtml(frag)), "12null"); }); + +Tinytest.add('templating - with falsy Issue #770', function (test) { + Template.test_template_issue770.value1 = function () { return "abc"; }; + Template.test_template_issue770.value2 = function () { return false; }; + var frag = Meteor.render(Template.test_template_issue770); + test.equal(canonicalizeHtml(DomUtils.fragmentToHtml(frag)), "abcxxxabc"); +}); \ No newline at end of file From a6f01b6c92c1d502e73e27436e4e478eeb883032 Mon Sep 17 00:00:00 2001 From: Emily Stark Date: Fri, 22 Mar 2013 17:51:27 -0400 Subject: [PATCH 2/2] Fix #770. Add optional else case to {{#with}}. --- packages/handlebars/evaluate.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/handlebars/evaluate.js b/packages/handlebars/evaluate.js index 1accbc99c0..31403fd1a7 100644 --- a/packages/handlebars/evaluate.js +++ b/packages/handlebars/evaluate.js @@ -28,7 +28,10 @@ Handlebars.json_ast_to_func = function (ast) { // what is passed in via named arguments. Handlebars._default_helpers = { 'with': function (data, options) { - return options.fn(data); + if (!data || (data instanceof Array && !data.length)) + return options.inverse(this); + else + return options.fn(data); }, 'each': function (data, options) { var parentData = this;