Fix regression in range lookup

This commit is contained in:
Justin Li
2015-07-09 13:21:46 -04:00
parent 1f9bd1d809
commit b4e133e26f
3 changed files with 19 additions and 5 deletions

View File

@@ -16,9 +16,22 @@ module Liquid
end
def evaluate(context)
start_int = Utils.to_integer(context.evaluate(@start_obj), true)
end_int = Utils.to_integer(context.evaluate(@end_obj), true)
start_int = to_integer(context.evaluate(@start_obj))
end_int = to_integer(context.evaluate(@end_obj))
start_int..end_int
end
private
def to_integer(input)
case input
when Integer
input
when NilClass, String
input.to_i
else
Utils.to_integer(input)
end
end
end
end

View File

@@ -33,14 +33,13 @@ module Liquid
segments
end
def self.to_integer(num, accept_invalid = false)
def self.to_integer(num)
return num if num.is_a?(Integer)
num = num.to_s
begin
Integer(num)
rescue ::ArgumentError
raise Liquid::ArgumentError, "invalid integer" unless accept_invalid
0
raise Liquid::ArgumentError, "invalid integer"
end
end

View File

@@ -42,6 +42,8 @@ HERE
assert_raises(Liquid::ArgumentError) do
Template.parse('{% for i in (a..2) %}{% endfor %}').render!("a" => [1, 2])
end
assert_template_result(' 0 1 2 3 ', '{% for item in (a..3) %} {{item}} {% endfor %}', "a" => "invalid integer")
end
def test_for_with_variable_range