mirror of
https://github.com/kemko/liquid.git
synced 2026-01-01 15:55:40 +03:00
The if tag now raises Liquid::SyntaxError rather than a generic RuntimeError for syntax problems.
This commit is contained in:
@@ -51,14 +51,14 @@ module Liquid
|
||||
else
|
||||
|
||||
expressions = markup.split(/\b(and|or)\b/).reverse
|
||||
raise SyntaxHelp unless expressions.shift =~ Syntax
|
||||
raise(SyntaxError, SyntaxHelp) unless expressions.shift =~ Syntax
|
||||
|
||||
condition = Condition.new($1, $2, $3)
|
||||
|
||||
while not expressions.empty?
|
||||
operator = expressions.shift
|
||||
|
||||
raise SyntaxHelp unless expressions.shift.to_s =~ Syntax
|
||||
raise(SyntaxError, SyntaxHelp) unless expressions.shift.to_s =~ Syntax
|
||||
|
||||
new_condition = Condition.new($1, $2, $3)
|
||||
new_condition.send(operator.to_sym, condition)
|
||||
|
||||
@@ -116,6 +116,10 @@ class IfElseTest < Test::Unit::TestCase
|
||||
assert_raise(SyntaxError){ assert_template_result('', '{% if jerry == 1 %}')}
|
||||
end
|
||||
|
||||
def test_syntax_error_no_expression
|
||||
assert_raise(SyntaxError) { assert_template_result('', '{% if %}') }
|
||||
end
|
||||
|
||||
def test_if_with_custom_condition
|
||||
Condition.operators['contains'] = :[]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user