From c2c6cb2b15e237cff534e7e8ca90cdffc9189ac8 Mon Sep 17 00:00:00 2001 From: Dylan Thacker-Smith Date: Tue, 29 Nov 2022 09:00:55 -0500 Subject: [PATCH] Allow commas to separate `for` tag attributes (#1658) For consistency with tags like the `render` tag, where we actually prefer to use commas to separate attributes --- lib/liquid/tags/for.rb | 5 +++-- test/integration/tags/for_tag_test.rb | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/liquid/tags/for.rb b/lib/liquid/tags/for.rb index b409d067..e02b6589 100644 --- a/lib/liquid/tags/for.rb +++ b/lib/liquid/tags/for.rb @@ -98,11 +98,12 @@ module Liquid @name = "#{@variable_name}-#{collection_name}" @reversed = p.id?('reversed') - while p.look(:id) && p.look(:colon, 1) + while p.look(:comma) || p.look(:id) + p.consume?(:comma) unless (attribute = p.id?('limit') || p.id?('offset')) raise SyntaxError, options[:locale].t("errors.syntax.for_invalid_attribute") end - p.consume + p.consume(:colon) set_attribute(attribute, p.expression) end p.consume(:end_of_string) diff --git a/test/integration/tags/for_tag_test.rb b/test/integration/tags/for_tag_test.rb index 3855d97b..b36a5ba2 100644 --- a/test/integration/tags/for_tag_test.rb +++ b/test/integration/tags/for_tag_test.rb @@ -103,6 +103,7 @@ HERE assert_template_result('1234', '{%for i in array limit:4 %}{{ i }}{%endfor%}', assigns) assert_template_result('3456', '{%for i in array limit:4 offset:2 %}{{ i }}{%endfor%}', assigns) assert_template_result('3456', '{%for i in array limit: 4 offset: 2 %}{{ i }}{%endfor%}', assigns) + assert_template_result('3456', '{%for i in array, limit: 4, offset: 2 %}{{ i }}{%endfor%}', assigns) end def test_limiting_with_invalid_limit