Optional line numbers for liquid errors

This commit is contained in:
Florian Weingarten
2014-09-05 14:12:29 +00:00
parent 2df643ba18
commit 5eff375094
7 changed files with 77 additions and 20 deletions
+31 -1
View File
@@ -1,5 +1,35 @@
module Liquid
class Error < ::StandardError; end
class Error < ::StandardError
attr_accessor :line_number
def self.render(e)
msg = if e.is_a?(Liquid::Error) && e.line_number
"#{e.line_number}: #{e.message}"
else
e.message
end
case e
when SyntaxError
"Liquid syntax error: #{msg}"
else
"Liquid error: #{msg}"
end
end
def self.error_with_line_number(e, token)
if e.is_a?(Liquid::Error)
e.set_line_number_from_token(token)
end
e
end
def set_line_number_from_token(token)
return unless token.respond_to?(:line_number)
self.line_number = token.line_number
end
end
class ArgumentError < Error; end
class ContextError < Error; end