mirror of
https://github.com/Shopify/liquid.git
synced 2026-10-03 00:55:11 -07:00
Fix regression in range lookup
This commit is contained in:
@@ -16,9 +16,22 @@ module Liquid
|
|||||||
end
|
end
|
||||||
|
|
||||||
def evaluate(context)
|
def evaluate(context)
|
||||||
start_int = Utils.to_integer(context.evaluate(@start_obj), true)
|
start_int = to_integer(context.evaluate(@start_obj))
|
||||||
end_int = Utils.to_integer(context.evaluate(@end_obj), true)
|
end_int = to_integer(context.evaluate(@end_obj))
|
||||||
start_int..end_int
|
start_int..end_int
|
||||||
end
|
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
|
||||||
end
|
end
|
||||||
|
|||||||
+2
-3
@@ -33,14 +33,13 @@ module Liquid
|
|||||||
segments
|
segments
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.to_integer(num, accept_invalid = false)
|
def self.to_integer(num)
|
||||||
return num if num.is_a?(Integer)
|
return num if num.is_a?(Integer)
|
||||||
num = num.to_s
|
num = num.to_s
|
||||||
begin
|
begin
|
||||||
Integer(num)
|
Integer(num)
|
||||||
rescue ::ArgumentError
|
rescue ::ArgumentError
|
||||||
raise Liquid::ArgumentError, "invalid integer" unless accept_invalid
|
raise Liquid::ArgumentError, "invalid integer"
|
||||||
0
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -42,6 +42,8 @@ HERE
|
|||||||
assert_raises(Liquid::ArgumentError) do
|
assert_raises(Liquid::ArgumentError) do
|
||||||
Template.parse('{% for i in (a..2) %}{% endfor %}').render!("a" => [1, 2])
|
Template.parse('{% for i in (a..2) %}{% endfor %}').render!("a" => [1, 2])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
assert_template_result(' 0 1 2 3 ', '{% for item in (a..3) %} {{item}} {% endfor %}', "a" => "invalid integer")
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_for_with_variable_range
|
def test_for_with_variable_range
|
||||||
|
|||||||
Reference in New Issue
Block a user