diff --git a/lib/liquid/parser.rb b/lib/liquid/parser.rb index d2006f3..6954343 100644 --- a/lib/liquid/parser.rb +++ b/lib/liquid/parser.rb @@ -75,7 +75,7 @@ module Liquid def variable_signature str = consume(:id) - if look(:open_square) + while look(:open_square) str << consume str << expression str << consume(:close_square) diff --git a/test/integration/output_test.rb b/test/integration/output_test.rb index b7aaf7d..f53e7d6 100644 --- a/test/integration/output_test.rb +++ b/test/integration/output_test.rb @@ -44,6 +44,14 @@ class OutputTest < Minitest::Test assert_equal expected, Template.parse(text).render!(@assigns) end + def test_variable_traversing_with_two_brackets + text = %({{ site.data.menu[include.menu][include.locale] }}) + assert_equal "it works!", Template.parse(text).render!( + "site" => { "data" => { "menu" => { "foo" => { "bar" => "it works!" } } } }, + "include" => { "menu" => "foo", "locale" => "bar" } + ) + end + def test_variable_traversing text = %| {{car.bmw}} {{car.gm}} {{car.bmw}} |