32 lines
749 B
Ruby
32 lines
749 B
Ruby
|
module Liquid
|
||
|
module ParserSwitching
|
||
|
def parse_with_selected_parser(markup)
|
||
|
case parse_context.error_mode
|
||
|
when :strict then strict_parse_with_error_context(markup)
|
||
|
when :lax then lax_parse(markup)
|
||
|
when :warn
|
||
|
begin
|
||
|
return strict_parse_with_error_context(markup)
|
||
|
rescue SyntaxError => e
|
||
|
parse_context.warnings << e
|
||
|
return lax_parse(markup)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def strict_parse_with_error_context(markup)
|
||
|
strict_parse(markup)
|
||
|
rescue SyntaxError => e
|
||
|
e.line_number = line_number
|
||
|
e.markup_context = markup_context(markup)
|
||
|
raise e
|
||
|
end
|
||
|
|
||
|
def markup_context(markup)
|
||
|
"in \"#{markup.strip}\""
|
||
|
end
|
||
|
end
|
||
|
end
|