diff --git a/lib/liquid/condition.rb b/lib/liquid/condition.rb index e5c321dc..c482c8ec 100644 --- a/lib/liquid/condition.rb +++ b/lib/liquid/condition.rb @@ -52,6 +52,10 @@ module Liquid @@method_literals[markup] || parse_context.parse_expression(markup) end + def self.parse(markup, ss, cache) + @@method_literals[markup] || Expression.parse(markup, ss, cache) + end + attr_reader :attachment, :child_condition attr_accessor :left, :operator, :right @@ -112,11 +116,15 @@ module Liquid private def equal_variables(left, right) + if left.is_a?(MethodLiteral) && right.is_a?(MethodLiteral) + return left.to_s == right.to_s + end + if left.is_a?(MethodLiteral) if right.respond_to?(left.method_name) return right.send(left.method_name) else - return nil + return left.to_s == right end end @@ -124,7 +132,7 @@ module Liquid if left.respond_to?(right.method_name) return left.send(right.method_name) else - return nil + return right.to_s == left end end diff --git a/lib/liquid/expression/comparison_expression.rb b/lib/liquid/expression/comparison_expression.rb index cac9e85e..189ea952 100644 --- a/lib/liquid/expression/comparison_expression.rb +++ b/lib/liquid/expression/comparison_expression.rb @@ -14,10 +14,9 @@ module Liquid match = comparison?(markup) if match - left = Expression.parse(match[1].strip, ss, cache) + left = Condition.parse(match[1].strip, ss, cache) operator = match[2].strip - right = Expression.parse(match[3].strip, ss, cache) - + right = Condition.parse(match[3].strip, ss, cache) return Condition.new(left, operator, right) end