From 4d6dec9b5ac4b703834ee2261f5673d8c399f89b Mon Sep 17 00:00:00 2001 From: Florian Weingarten Date: Fri, 17 Jul 2015 10:08:09 -0400 Subject: [PATCH] Fix chained access to multi-dimensional hash --- lib/liquid/parser.rb | 2 +- test/integration/output_test.rb | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) 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 f32a0a2..b4cf9d7 100644 --- a/test/integration/output_test.rb +++ b/test/integration/output_test.rb @@ -43,6 +43,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}} )