diff --git a/.rubocop.yml b/.rubocop.yml index 8ae01fb1..787fbdbe 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -4,7 +4,6 @@ AllCops: Include: - lib/**/*.rb Exclude: - - lib/jekyll/convertible.rb - lib/jekyll/renderer.rb - bin/**/* - benchmark/**/* diff --git a/lib/jekyll/convertible.rb b/lib/jekyll/convertible.rb index ca613f78..954802a1 100644 --- a/lib/jekyll/convertible.rb +++ b/lib/jekyll/convertible.rb @@ -95,7 +95,7 @@ module Jekyll # Returns the String extension for the output file. # e.g. ".html" for an HTML output file. def output_ext - Jekyll::Renderer.new(site, self).output_ext + _renderer.output_ext end # Determine which converter to use based on this convertible's @@ -211,40 +211,7 @@ module Jekyll # # Returns nothing def render_all_layouts(layouts, payload, info) - # recursively render layouts - layout = layouts[data["layout"]] - - Jekyll.logger.warn( - "Build Warning:", - "Layout '#{data["layout"]}' requested in #{path} does not exist." - ) if invalid_layout? layout - - used = Set.new([layout]) - - # Reset the payload layout data to ensure it starts fresh for each page. - payload["layout"] = nil - - while layout - Jekyll.logger.debug "Rendering Layout:", path - payload["content"] = output - payload["layout"] = Utils.deep_merge_hashes(layout.data, payload["layout"] || {}) - - self.output = render_liquid(layout.content, - payload, - info, - layout.relative_path) - - # Add layout to dependency tree - site.regenerator.add_dependency( - site.in_source_dir(path), - site.in_source_dir(layout.path) - ) - - if (layout = layouts[layout.data["layout"]]) - break if used.include?(layout) - used << layout - end - end + _renderer.place_in_layouts(output, payload, info) end # Add any necessary layouts to this convertible document. @@ -306,5 +273,10 @@ module Jekyll data[property] end end + + private + def _renderer + @_renderer ||= Jekyll::Renderer.new(site, self) + end end end