mirror of
https://github.com/Shopify/liquid.git
synced 2026-09-12 23:40:45 -07:00
Add line numbers to warnings
This commit is contained in:
committed by
Florian Weingarten
parent
3a0ee6ae91
commit
27c1019385
+4
-2
@@ -32,7 +32,8 @@ module Liquid
|
|||||||
|
|
||||||
# fetch the tag from registered blocks
|
# fetch the tag from registered blocks
|
||||||
if tag = Template.tags[$1]
|
if tag = Template.tags[$1]
|
||||||
new_tag = tag.parse($1, $2, tokens, @options)
|
markup = token.is_a?(Token) ? token.child($2) : $2
|
||||||
|
new_tag = tag.parse($1, markup, tokens, @options)
|
||||||
new_tag.line_number = token.line_number if token.is_a?(Token)
|
new_tag.line_number = token.line_number if token.is_a?(Token)
|
||||||
@blank &&= new_tag.blank?
|
@blank &&= new_tag.blank?
|
||||||
@nodelist << new_tag
|
@nodelist << new_tag
|
||||||
@@ -103,7 +104,8 @@ module Liquid
|
|||||||
|
|
||||||
def create_variable(token)
|
def create_variable(token)
|
||||||
token.scan(ContentOfVariable) do |content|
|
token.scan(ContentOfVariable) do |content|
|
||||||
return Variable.new(content.first, @options)
|
markup = token.is_a?(Token) ? token.child(content.first) : content.first
|
||||||
|
return Variable.new(markup, @options)
|
||||||
end
|
end
|
||||||
raise SyntaxError.new(options[:locale].t("errors.syntax.variable_termination".freeze, :token => token, :tag_end => VariableEnd.inspect))
|
raise SyntaxError.new(options[:locale].t("errors.syntax.variable_termination".freeze, :token => token, :tag_end => VariableEnd.inspect))
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ module Liquid
|
|||||||
begin
|
begin
|
||||||
return strict_parse_with_error_context(markup)
|
return strict_parse_with_error_context(markup)
|
||||||
rescue SyntaxError => e
|
rescue SyntaxError => e
|
||||||
|
e.line_number = markup.line_number if markup.is_a?(Token)
|
||||||
@warnings ||= []
|
@warnings ||= []
|
||||||
@warnings << e
|
@warnings << e
|
||||||
return lax_parse(markup)
|
return lax_parse(markup)
|
||||||
|
|||||||
@@ -10,5 +10,9 @@ module Liquid
|
|||||||
def raw
|
def raw
|
||||||
"<raw>"
|
"<raw>"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def child(string)
|
||||||
|
Token.new(string, @line_number)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -121,6 +121,12 @@ class ErrorHandlingTest < Minitest::Test
|
|||||||
assert_equal '', template.render
|
assert_equal '', template.render
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_warning_line_numbers
|
||||||
|
template = Liquid::Template.parse("{% if ~~~ %}\n{{%%%}}{% else %}\n{{ hello. }}{% endif %}", :error_mode => :warn, :line_numbers => true)
|
||||||
|
assert_equal 3, template.warnings.size
|
||||||
|
assert_equal [1,2,3], template.warnings.map(&:line_number)
|
||||||
|
end
|
||||||
|
|
||||||
# Liquid should not catch Exceptions that are not subclasses of StandardError, like Interrupt and NoMemoryError
|
# Liquid should not catch Exceptions that are not subclasses of StandardError, like Interrupt and NoMemoryError
|
||||||
def test_exceptions_propagate
|
def test_exceptions_propagate
|
||||||
assert_raises Exception do
|
assert_raises Exception do
|
||||||
|
|||||||
Reference in New Issue
Block a user