From 08d36b09a2258afb1a675b0c1f994ee541d9fd33 Mon Sep 17 00:00:00 2001 From: Albert Chu Date: Mon, 10 Mar 2025 18:12:41 -0600 Subject: [PATCH] Fixed ComparisonExpression.parse with MethodLiterals --- lib/liquid/condition.rb | 12 ++++++++++-- lib/liquid/expression/comparison_expression.rb | 5 ++--- 2 files changed, 12 insertions(+), 5 deletions(-) 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