Reduce Jekyll::Renderer instances during a build (#7570)

Merge pull request 7570
This commit is contained in:
Ashwin Maroli 2020-04-13 06:42:48 +05:30 committed by GitHub
parent ffdab933b8
commit e42c35c9ac
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 22 additions and 17 deletions

View File

@ -78,7 +78,7 @@ module Jekyll
#
# Returns the transformed contents.
def transform
_renderer.convert(content)
renderer.convert(content)
end
# Determine the extension depending on content_type.
@ -86,7 +86,7 @@ module Jekyll
# Returns the String extension for the output file.
# e.g. ".html" for an HTML output file.
def output_ext
_renderer.output_ext
renderer.output_ext
end
# Determine which converter to use based on this convertible's
@ -94,7 +94,7 @@ module Jekyll
#
# Returns the Converter instance.
def converters
_renderer.converters
renderer.converters
end
# Render Liquid in the content
@ -105,7 +105,7 @@ module Jekyll
#
# Returns the converted content
def render_liquid(content, payload, info, path)
_renderer.render_liquid(content, payload, info, path)
renderer.render_liquid(content, payload, info, path)
end
# Convert this Convertible's data to a Hash suitable for use by Liquid.
@ -191,10 +191,10 @@ module Jekyll
#
# Returns nothing
def render_all_layouts(layouts, payload, info)
_renderer.layouts = layouts
self.output = _renderer.place_in_layouts(output, payload, info)
renderer.layouts = layouts
self.output = renderer.place_in_layouts(output, payload, info)
ensure
@_renderer = nil # this will allow the modifications above to disappear
@renderer = nil # this will allow the modifications above to disappear
end
# Add any necessary layouts to this convertible document.
@ -204,15 +204,15 @@ module Jekyll
#
# Returns nothing.
def do_layout(payload, layouts)
self.output = _renderer.tap do |renderer|
renderer.layouts = layouts
renderer.payload = payload
self.output = renderer.tap do |doc_renderer|
doc_renderer.layouts = layouts
doc_renderer.payload = payload
end.run
Jekyll.logger.debug "Post-Render Hooks:", relative_path
Jekyll::Hooks.trigger hook_owner, :post_render, self
ensure
@_renderer = nil # this will allow the modifications above to disappear
@renderer = nil # this will allow the modifications above to disappear
end
# Write the generated page file to the destination directory.
@ -241,12 +241,12 @@ module Jekyll
end
end
private
def _renderer
@_renderer ||= Jekyll::Renderer.new(site, self)
def renderer
@renderer ||= Jekyll::Renderer.new(site, self)
end
private
def no_layout?
data["layout"] == "none"
end

View File

@ -116,7 +116,7 @@ module Jekyll
#
# Returns the output extension
def output_ext
@output_ext ||= Jekyll::Renderer.new(site, self).output_ext
renderer.output_ext
end
# The base filename of the document, without the file extname.
@ -133,6 +133,10 @@ module Jekyll
@basename ||= File.basename(path)
end
def renderer
@renderer ||= Jekyll::Renderer.new(site, self)
end
# Produces a "cleaned" relative path.
# The "cleaned" relative path is the relative path without the extname
# and with the collection's directory removed as well.

View File

@ -520,7 +520,8 @@ module Jekyll
def render_regenerated(document, payload)
return unless regenerator.regenerate?(document)
document.output = Jekyll::Renderer.new(self, document, payload).run
document.renderer.payload = payload
document.output = document.renderer.run
document.trigger_hooks(:post_render)
end
end