Fix case where a variable name is falsy

This commit is contained in:
Justin Li
2014-10-21 12:09:26 -04:00
parent d9ae36ec40
commit dedd1d3dc0
3 changed files with 3 additions and 1 deletions

View File

@@ -83,7 +83,7 @@ module Liquid
end
def render(context)
return ''.freeze unless @name
return ''.freeze if @name.nil?
@filters.inject(context.evaluate(@name)) do |output, (filter_name, filter_args, filter_kwargs)|
filter_args = evaluate_filter_expressions(context, filter_args, filter_kwargs)
output = context.invoke(filter_name, output, *filter_args)

View File

@@ -8,6 +8,7 @@ class IfElseTagTest < Minitest::Test
assert_template_result(' this text should go into the output ',
' {% if true %} this text should go into the output {% endif %} ')
assert_template_result(' you rock ?','{% if false %} you suck {% endif %} {% if true %} you rock {% endif %}?')
assert_template_result(' NO ','{% assign v = false %}{% if v %} YES {% else %} NO {% endif %}')
end
def test_if_else

View File

@@ -31,6 +31,7 @@ class VariableTest < Minitest::Test
def test_false_renders_as_false
assert_equal 'false', Template.parse("{{ foo }}").render!('foo' => false)
assert_equal 'false', Template.parse("{{ false }}").render!
end
def test_preset_assigns