From 4c30922d8ec5e40f10adb6911487e90694cab53b Mon Sep 17 00:00:00 2001 From: Nathaniel Bibler Date: Wed, 21 May 2008 23:58:12 -0400 Subject: [PATCH] The if tag now raises Liquid::SyntaxError rather than a generic RuntimeError for syntax problems. --- lib/liquid/tags/if.rb | 4 ++-- test/if_else_test.rb | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/liquid/tags/if.rb b/lib/liquid/tags/if.rb index 0c3eaa9..8ff4708 100644 --- a/lib/liquid/tags/if.rb +++ b/lib/liquid/tags/if.rb @@ -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) diff --git a/test/if_else_test.rb b/test/if_else_test.rb index 343ab0c..5daef3f 100644 --- a/test/if_else_test.rb +++ b/test/if_else_test.rb @@ -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'] = :[]