From 420a1c79e1010f9184ecad0692a72f3bee023e08 Mon Sep 17 00:00:00 2001 From: Dylan Thacker-Smith Date: Mon, 19 Oct 2020 12:10:32 -0400 Subject: [PATCH] Refactor variable lookup strict parsing to reduce coupling on dot lookup --- lib/liquid/parser.rb | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/lib/liquid/parser.rb b/lib/liquid/parser.rb index 5b38eac..b43576e 100644 --- a/lib/liquid/parser.rb +++ b/lib/liquid/parser.rb @@ -50,7 +50,8 @@ module Liquid token = @tokens[@p] case token[0] when :id - variable_signature + str = consume + str << variable_lookups when :string, :number consume when :open_round @@ -76,16 +77,19 @@ module Liquid str end - def variable_signature - str = consume(:id) - while look(:open_square) - str << consume - str << expression - str << consume(:close_square) - end - if look(:dot) - str << consume - str << variable_signature + def variable_lookups + str = +"" + loop do + if look(:open_square) + str << consume + str << expression + str << consume(:close_square) + elsif look(:dot) + str << consume + str << consume(:id) + else + break + end end str end