mirror of
https://github.com/Shopify/liquid.git
synced 2026-09-18 18:30:40 -07:00
Extract rescue code from BlockBody#render_node for re-use in liquid-c
This commit is contained in:
@@ -71,15 +71,23 @@ module Liquid
|
|||||||
# @api private
|
# @api private
|
||||||
def self.render_node(context, output, node)
|
def self.render_node(context, output, node)
|
||||||
node.render_to_output_buffer(context, output)
|
node.render_to_output_buffer(context, output)
|
||||||
rescue UndefinedVariable, UndefinedDropMethod, UndefinedFilter => e
|
rescue => exc
|
||||||
context.handle_error(e, node.line_number)
|
blank_tag = !node.instance_of?(Variable) && node.blank?
|
||||||
rescue MemoryError
|
rescue_render_node(context, output, node.line_number, exc, blank_tag)
|
||||||
raise
|
end
|
||||||
rescue ::StandardError => e
|
|
||||||
line_number = node.is_a?(String) ? nil : node.line_number
|
# @api private
|
||||||
error_message = context.handle_error(e, line_number)
|
def self.rescue_render_node(context, output, line_number, exc, blank_tag)
|
||||||
if node.instance_of?(Variable) || !node.blank? # conditional for backwards compatibility
|
case exc
|
||||||
output << error_message
|
when MemoryError
|
||||||
|
raise
|
||||||
|
when UndefinedVariable, UndefinedDropMethod, UndefinedFilter
|
||||||
|
context.handle_error(exc, line_number)
|
||||||
|
else
|
||||||
|
error_message = context.handle_error(exc, line_number)
|
||||||
|
unless blank_tag # conditional for backwards compatibility
|
||||||
|
output << error_message
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user