mirror of
https://github.com/Shopify/liquid.git
synced 2026-09-26 13:45:13 -07:00
Refactor variable lookup strict parsing to reduce coupling on dot lookup
This commit is contained in:
+15
-11
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user