From 070639daba6ba600996990d62d667847420cd1dc Mon Sep 17 00:00:00 2001 From: Justin Li Date: Fri, 15 May 2015 23:13:15 -0400 Subject: [PATCH] Push to for_stack at the beginning of For#render --- lib/liquid/tags/for.rb | 6 +++--- test/integration/tags/for_tag_test.rb | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/liquid/tags/for.rb b/lib/liquid/tags/for.rb index 9247758..cd0b764 100644 --- a/lib/liquid/tags/for.rb +++ b/lib/liquid/tags/for.rb @@ -70,6 +70,9 @@ module Liquid for_offsets = context.registers[:for] ||= Hash.new(0) for_stack = context.registers[:for_stack] ||= [] + parent_loop = for_stack.last + for_stack.push(nil) + collection = context.evaluate(@collection_name) collection = collection.to_a if collection.is_a?(Range) @@ -98,9 +101,6 @@ module Liquid # Store our progress through the collection for the continue flag for_offsets[@name] = from + segment.length - parent_loop = for_stack.last - for_stack.push(nil) - context.stack do segment.each_with_index do |item, index| context[@variable_name] = item diff --git a/test/integration/tags/for_tag_test.rb b/test/integration/tags/for_tag_test.rb index 9c6fd6f..624a9de 100644 --- a/test/integration/tags/for_tag_test.rb +++ b/test/integration/tags/for_tag_test.rb @@ -313,6 +313,10 @@ HERE 'outer' => [[1, 1, 1], [1, 1, 1]]) end + def test_inner_for_over_empty_input + assert_template_result 'oo', '{% for a in (1..2) %}o{% for b in empty %}{% endfor %}{% endfor %}' + end + def test_blank_string_not_iterable assert_template_result('', "{% for char in characters %}I WILL NOT BE OUTPUT{% endfor %}", 'characters' => '') end