Refactor variable lookup strict parsing to reduce coupling on dot lookup

This commit is contained in:
Dylan Thacker-Smith
2020-10-19 12:10:32 -04:00
parent 6d39050e1e
commit 420a1c79e1
+15 -11
View File
@@ -50,7 +50,8 @@ module Liquid
token = @tokens[@p] token = @tokens[@p]
case token[0] case token[0]
when :id when :id
variable_signature str = consume
str << variable_lookups
when :string, :number when :string, :number
consume consume
when :open_round when :open_round
@@ -76,16 +77,19 @@ module Liquid
str str
end end
def variable_signature def variable_lookups
str = consume(:id) str = +""
while look(:open_square) loop do
str << consume if look(:open_square)
str << expression str << consume
str << consume(:close_square) str << expression
end str << consume(:close_square)
if look(:dot) elsif look(:dot)
str << consume str << consume
str << variable_signature str << consume(:id)
else
break
end
end end
str str
end end