From 8f84ddb5ce8b3296b781ee269d1f1d9ce0ea3750 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 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}} |