diff --git a/lib/liquid/tags/if.rb b/lib/liquid/tags/if.rb index f0cd4dbb4..3b7773258 100644 --- a/lib/liquid/tags/if.rb +++ b/lib/liquid/tags/if.rb @@ -14,7 +14,7 @@ module Liquid class If < Block SyntaxHelp = "Syntax Error in tag 'if' - Valid syntax: if [expression]" Syntax = /(#{QuotedFragment})\s*([=!<>a-z_]+)?\s*(#{QuotedFragment})?/ - ExpressionsAndOperators = /(?:\b(?:and|or)\b|(?:\s*(?!\b(?:and|or)\b)(?:#{QuotedFragment}|\S+)\s*)+)/ + ExpressionsAndOperators = /(?:\b(?:\s?and\s?|\s?or\s?)\b|(?:\s*(?!\b(?:\s?and\s?|\s?or\s?)\b)(?:#{QuotedFragment}|\S+)\s*)+)/ def initialize(tag_name, markup, tokens) @blocks = [] @@ -56,7 +56,7 @@ def push_block(tag, markup) condition = Condition.new($1, $2, $3) while not expressions.empty? - operator = expressions.shift + operator = (expressions.shift).to_s.strip raise(SyntaxError, SyntaxHelp) unless expressions.shift.to_s =~ Syntax diff --git a/test/lib/liquid/tags/if_else_test.rb b/test/lib/liquid/tags/if_else_test.rb index 5b4eb31a8..cd5427b22 100644 --- a/test/lib/liquid/tags/if_else_test.rb +++ b/test/lib/liquid/tags/if_else_test.rb @@ -151,9 +151,10 @@ def test_if_with_custom_condition Condition.operators.delete 'contains' end - # def test_operators_are_ignored_unless_isolated - # Condition.operators['contains'] = :[] - # - # assert_template_result('yes', %({% if 'gnomeslab' == 'gnomeslab' %}yes{% endif %})) - # end + def test_operators_are_ignored_unless_isolated + Condition.operators['contains'] = :[] + + assert_template_result('yes', + %({% if 'gnomeslab-and-or-liquid' contains 'gnomeslab-and-or-liquid' %}yes{% endif %})) + end end # IfElseTest