Fix broken rendering of variables which are equal to false (closes #345)

This commit is contained in:
Florian Weingarten 2014-04-29 14:33:07 -04:00
parent f15d24509d
commit 2a12f253bf
3 changed files with 6 additions and 2 deletions

View File

@ -194,7 +194,8 @@ module Liquid
if scope.nil? if scope.nil?
@environments.each do |e| @environments.each do |e|
if variable = lookup_and_evaluate(e, key) variable = lookup_and_evaluate(e, key)
unless variable.nil?
scope = e scope = e
break break
end end

View File

@ -20,5 +20,4 @@ class ContextTest < Test::Unit::TestCase
assert_equal 'Global test', Template.parse("{{'test' | notice }}").render! assert_equal 'Global test', Template.parse("{{'test' | notice }}").render!
assert_equal 'Local test', Template.parse("{{'test' | notice }}").render!({}, :filters => [local]) assert_equal 'Local test', Template.parse("{{'test' | notice }}").render!({}, :filters => [local])
end end
end end

View File

@ -25,6 +25,10 @@ class VariableTest < Test::Unit::TestCase
assert_equal 'worked', template.render!('test' => {'test' => 'worked'}) assert_equal 'worked', template.render!('test' => {'test' => 'worked'})
end end
def test_false_renders_as_false
assert_equal 'false', Template.parse("{{ foo }}").render!('foo' => false)
end
def test_preset_assigns def test_preset_assigns
template = Template.parse(%|{{ test }}|) template = Template.parse(%|{{ test }}|)
template.assigns['test'] = 'worked' template.assigns['test'] = 'worked'