Use cleaner recursive solution

This commit is contained in:
Justin Li
2015-05-28 16:16:30 -04:00
parent a9c7df931f
commit a639a13380
+7 -14
View File
@@ -83,23 +83,16 @@ module Liquid
def strict_parse(markup) def strict_parse(markup)
p = Parser.new(markup) p = Parser.new(markup)
condition = parse_binary_comparison(p)
conditions = [parse_comparison(p)]
while op = (p.id?('and'.freeze) || p.id?('or'.freeze))
conditions << op << parse_comparison(p)
end
p.consume(:end_of_string) p.consume(:end_of_string)
condition
end
condition = conditions.pop def parse_binary_comparison(p)
condition = parse_comparison(p)
until conditions.empty? if op = (p.id?('and'.freeze) || p.id?('or'.freeze))
op = conditions.pop condition.send(op, parse_binary_comparison(p))
new_cond = conditions.pop
new_cond.send(op, condition)
condition = new_cond
end end
condition condition
end end