diff --git a/lib/jekyll/convertible.rb b/lib/jekyll/convertible.rb index bfb80c7a..ca613f78 100644 --- a/lib/jekyll/convertible.rb +++ b/lib/jekyll/convertible.rb @@ -114,16 +114,16 @@ module Jekyll # # Returns the converted content def render_liquid(content, payload, info, path) - site.liquid_renderer.file(path).parse(content).render!(payload, info) - rescue Tags::IncludeTagError => e - Jekyll.logger.error( - "Liquid Exception:", - "#{e.message} in #{e.path}, included in #{path || self.path}" - ) - raise e + template = site.liquid_renderer.file(path).parse(content) + template.warnings.each do |e| + Jekyll.logger.warn "Liquid Warning:", + LiquidRenderer.format_error(e, path || self.path) + end + template.render!(payload, info) # rubocop: disable RescueException rescue Exception => e - Jekyll.logger.error "Liquid Exception:", "#{e.message} in #{path || self.path}" + Jekyll.logger.error "Liquid Exception:", + LiquidRenderer.format_error(e, path || self.path) raise e end # rubocop: enable RescueException diff --git a/lib/jekyll/liquid_renderer.rb b/lib/jekyll/liquid_renderer.rb index 9110cb13..919930ef 100644 --- a/lib/jekyll/liquid_renderer.rb +++ b/lib/jekyll/liquid_renderer.rb @@ -39,5 +39,12 @@ module Jekyll def stats_table(n = 50) LiquidRenderer::Table.new(@stats).to_s(n) end + + def self.format_error(e, path) + if e.is_a? Tags::IncludeTagError + return "#{e.message} in #{e.path}, included in #{path}" + end + "#{e.message} in #{path}" + end end end diff --git a/lib/jekyll/liquid_renderer/file.rb b/lib/jekyll/liquid_renderer/file.rb index 63686d8f..eec8c7b5 100644 --- a/lib/jekyll/liquid_renderer/file.rb +++ b/lib/jekyll/liquid_renderer/file.rb @@ -30,6 +30,10 @@ module Jekyll end end + def warnings + @template.warnings + end + private def measure_bytes diff --git a/lib/jekyll/renderer.rb b/lib/jekyll/renderer.rb index 143fe73e..083a2a6b 100644 --- a/lib/jekyll/renderer.rb +++ b/lib/jekyll/renderer.rb @@ -106,15 +106,16 @@ module Jekyll # # Returns the content, rendered by Liquid. def render_liquid(content, payload, info, path = nil) - site.liquid_renderer.file(path).parse(content).render!(payload, info) - rescue Tags::IncludeTagError => e - Jekyll.logger.error "Liquid Exception:", - "#{e.message} in #{e.path}, included in #{path || document.relative_path}" - raise e + template = site.liquid_renderer.file(path).parse(content) + template.warnings.each do |e| + Jekyll.logger.warn "Liquid Warning:", + LiquidRenderer.format_error(e, path || document.relative_path) + end + template.render!(payload, info) # rubocop: disable RescueException rescue Exception => e Jekyll.logger.error "Liquid Exception:", - "#{e.message} in #{path || document.relative_path}" + LiquidRenderer.format_error(e, path || document.relative_path) raise e end # rubocop: enable RescueException