diff --git a/lib/liquid/tags/for.rb b/lib/liquid/tags/for.rb index 5fb9d812..4ff86713 100644 --- a/lib/liquid/tags/for.rb +++ b/lib/liquid/tags/for.rb @@ -42,7 +42,7 @@ module Liquid # forloop.last:: Returns true if the item is the last item. # class For < Block - Syntax = /(\w+)\s+in\s+(#{VariableSignature}+)\s*(reversed)?/ + Syntax = /(\w+)\s+in\s+(#{Expression}+)\s*(reversed)?/ def initialize(tag_name, markup, tokens) if markup =~ Syntax diff --git a/test/standard_tag_test.rb b/test/standard_tag_test.rb index 0b9dc8ac..aae09bda 100644 --- a/test/standard_tag_test.rb +++ b/test/standard_tag_test.rb @@ -99,6 +99,10 @@ HERE assert_template_result('+--', '{%for item in array%}{% if forloop.first %}+{% else %}-{% endif %}{%endfor%}', assigns) end + def test_for_with_filtered_expressions + assert_template_result('abc','{% for letter in letters|sort %}{{ letter }}{% endfor %}', 'letters' => %w{c b a}) + end + def test_limiting assigns = {'array' => [1,2,3,4,5,6,7,8,9,0]} assert_template_result('12','{%for i in array limit:2 %}{{ i }}{%endfor%}',assigns)