Skip to content

Commit

Permalink
Raise Solid::SyntaxError exceptions
Browse files Browse the repository at this point in the history
  • Loading branch information
etiennebarrie committed Jan 19, 2012
1 parent 52eedd5 commit 03c6fab
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 2 deletions.
2 changes: 2 additions & 0 deletions lib/solid.rb
Expand Up @@ -37,4 +37,6 @@ def unproxify(object)


end end


SyntaxError = Class.new(Liquid::SyntaxError)

end end
4 changes: 2 additions & 2 deletions lib/solid/parser.rb
Expand Up @@ -90,7 +90,7 @@ def dive_in
def parse_one(argument) def parse_one(argument)
type = argument.shift type = argument.shift
handler = "handle_#{type.to_s.sub('@', '')}" handler = "handle_#{type.to_s.sub('@', '')}"
raise SyntaxError, "unknown Ripper type: #{type.inspect}" unless respond_to?(handler) raise Solid::SyntaxError, "unknown Ripper type: #{type.inspect}" unless respond_to?(handler)
public_send handler, *argument public_send handler, *argument
end end


Expand Down Expand Up @@ -228,7 +228,7 @@ def handle_regexp_literal(regexp_literal, lineno_column)
# # true # # true
# "true", [1, 33] # "true", [1, 33]
def handle_kw(keyword, lineno_column) def handle_kw(keyword, lineno_column)
raise 'unknown Ripper sexp' unless KEYWORDS.has_key? keyword raise Solid::SyntaxError, 'unknown Ripper sexp' unless KEYWORDS.has_key? keyword
KEYWORDS[keyword] KEYWORDS[keyword]
end end


Expand Down
6 changes: 6 additions & 0 deletions spec/solid/arguments_spec.rb
Expand Up @@ -252,6 +252,12 @@ def parse(string, context={})
parse('42.__send__("`", "echo foo")').should be == [nil] parse('42.__send__("`", "echo foo")').should be == [nil]
end end


it "should raise a Solid::SyntaxError on unknown constructs" do
expect {
parse('{}[]')
}.to raise_error(Solid::SyntaxError)
end

end end


context 'with useless round brackets' do context 'with useless round brackets' do
Expand Down

0 comments on commit 03c6fab

Please sign in to comment.