From b4e133e26ffe8a4ed2a0423c4ef384d1b24c61a9 Mon Sep 17 00:00:00 2001 From: Justin Li Date: Thu, 9 Jul 2015 13:21:46 -0400 Subject: [PATCH] Fix regression in range lookup --- lib/liquid/range_lookup.rb | 17 +++++++++++++++-- lib/liquid/utils.rb | 5 ++--- test/integration/tags/for_tag_test.rb | 2 ++ 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/lib/liquid/range_lookup.rb b/lib/liquid/range_lookup.rb index ae6fc28..93bb420 100644 --- a/lib/liquid/range_lookup.rb +++ b/lib/liquid/range_lookup.rb @@ -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 diff --git a/lib/liquid/utils.rb b/lib/liquid/utils.rb index 490b049..7725ff8 100644 --- a/lib/liquid/utils.rb +++ b/lib/liquid/utils.rb @@ -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 diff --git a/test/integration/tags/for_tag_test.rb b/test/integration/tags/for_tag_test.rb index fe2779f..d9d396f 100644 --- a/test/integration/tags/for_tag_test.rb +++ b/test/integration/tags/for_tag_test.rb @@ -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