From fbab19ac8c64eda118c1f67e27a01cac015b53bf Mon Sep 17 00:00:00 2001 From: Michael Go Date: Mon, 3 Oct 2022 15:57:28 -0300 Subject: [PATCH] fix tablerow drop's last attribute with missing cols param --- lib/liquid/tags/table_row.rb | 2 +- test/integration/tags/table_row_test.rb | 52 +++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) diff --git a/lib/liquid/tags/table_row.rb b/lib/liquid/tags/table_row.rb index 6ca528c71..5371f70af 100644 --- a/lib/liquid/tags/table_row.rb +++ b/lib/liquid/tags/table_row.rb @@ -51,7 +51,7 @@ def render_to_output_buffer(context, output) collection = Utils.slice_collection(collection, from, to) length = collection.length - cols = context.evaluate(@attributes['cols']).to_i + cols = @attributes['cols'].nil? ? length : context.evaluate(@attributes['cols']).to_i output << "\n" context.stack do diff --git a/test/integration/tags/table_row_test.rb b/test/integration/tags/table_row_test.rb index a5ecf1406..1f6edda43 100644 --- a/test/integration/tags/table_row_test.rb +++ b/test/integration/tags/table_row_test.rb @@ -65,4 +65,56 @@ def test_blank_string_not_iterable "{% tablerow char in characters cols:3 %}I WILL NOT BE OUTPUT{% endtablerow %}", { 'characters' => '' }) end + + def test_tablerow_loop_drop_attributes + template = <<~LIQUID.chomp + {% tablerow i in (1...2) %} + col: {{ tablerowloop.col }} + col0: {{ tablerowloop.col0 }} + col_first: {{ tablerowloop.col_first }} + col_last: {{ tablerowloop.col_last }} + first: {{ tablerowloop.first }} + index: {{ tablerowloop.index }} + index0: {{ tablerowloop.index0 }} + last: {{ tablerowloop.last }} + length: {{ tablerowloop.length }} + rindex: {{ tablerowloop.rindex }} + rindex0: {{ tablerowloop.rindex0 }} + row: {{ tablerowloop.row }} + {% endtablerow %} + LIQUID + + expected_output = <<~OUTPUT + + + col: 1 + col0: 0 + col_first: true + col_last: false + first: true + index: 1 + index0: 0 + last: false + length: 2 + rindex: 2 + rindex0: 1 + row: 1 + + col: 2 + col0: 1 + col_first: false + col_last: true + first: false + index: 2 + index0: 1 + last: true + length: 2 + rindex: 1 + rindex0: 0 + row: 1 + + OUTPUT + + assert_template_result(expected_output, template) + end end