From a549d289d7a32672cd6cfe1eb3863958b10deffb Mon Sep 17 00:00:00 2001 From: Richard Monette Date: Fri, 21 Oct 2016 13:27:54 -0400 Subject: [PATCH] introduce unhandled liquid exception check arity --- lib/liquid/block_body.rb | 4 ++-- lib/liquid/context.rb | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/liquid/block_body.rb b/lib/liquid/block_body.rb index 00811c1..4e2a4c9 100644 --- a/lib/liquid/block_body.rb +++ b/lib/liquid/block_body.rb @@ -93,10 +93,10 @@ module Liquid rescue MemoryError => e raise e rescue UndefinedVariable, UndefinedDropMethod, UndefinedFilter => e - context.handle_error(e, token.line_number) + context.handle_error(e, token.line_number, token.raw) output << nil rescue ::StandardError => e - output << context.handle_error(e, token.line_number) + output << context.handle_error(e, token.line_number, token.raw) end end diff --git a/lib/liquid/context.rb b/lib/liquid/context.rb index d41af49..7692821 100644 --- a/lib/liquid/context.rb +++ b/lib/liquid/context.rb @@ -73,7 +73,7 @@ module Liquid @interrupts.pop end - def handle_error(e, line_number = nil) + def handle_error(e, line_number = nil, raw_token = nil) if e.is_a?(Liquid::Error) e.template_name ||= template_name e.line_number ||= line_number @@ -82,7 +82,9 @@ module Liquid output = nil if exception_handler - result = exception_handler.call(e) + args = [e] + args << { line_number: line_number, raw_token: raw_token } if exception_handler.arity == 2 + result = exception_handler.call(*args) case result when Exception e = result