class Sitepress::Renderers::Controller

This would be the ideal way to render Sitepress resources, but there's a lot of hackery involved in getting it to work properly.

Attributes

controller[R]
resource[R]

Public Class Methods

new(resource, controller = SiteController) click to toggle source
# File lib/sitepress/renderers/controller.rb, line 8
def initialize(resource, controller = SiteController)
  @controller = controller
  @resource = resource
end

Public Instance Methods

render() click to toggle source
# File lib/sitepress/renderers/controller.rb, line 13
def render
  renderer.render inline: resource.body,
    type: resource.handler,
    layout: resolve_layout,
    content_type: resource.mime_type.to_s
end

Private Instance Methods

has_layout_conditions?() click to toggle source
# File lib/sitepress/renderers/controller.rb, line 25
def has_layout_conditions?
  controller._layout_conditions?
end
layout() click to toggle source
# File lib/sitepress/renderers/controller.rb, line 21
def layout
  controller._layout
end
layout_conditions() click to toggle source
# File lib/sitepress/renderers/controller.rb, line 29
def layout_conditions
  controller._layout_conditions
end
renderer() click to toggle source
# File lib/sitepress/renderers/controller.rb, line 33
def renderer
  controller.renderer.new("PATH_INFO" => resource.request_path)
end
resolve_layout() click to toggle source
# File lib/sitepress/renderers/controller.rb, line 37
def resolve_layout
  return resource.data.fetch("layout") if resource.data.key? "layout"
  return layout unless has_layout_conditions?

  clause, formats = layout_conditions.first
  format = resource.format.to_s

  case clause
  when :only
    layout if formats.include? format
  when :except
    layout if formats.exclude? format
  end
end