class Racket::ViewManager

Handles rendering in Racket applications.

Public Class Methods

new(locator, renderer) click to toggle source
# File lib/racket/view_manager.rb, line 30
def initialize(locator, renderer)
  @locator = locator
  @renderer = renderer
end
service(_options = {}) click to toggle source

Returns a service proc that can be used by the registry.

@param [Hash] _options (unused) @return [Proc]

# File lib/racket/view_manager.rb, line 26
def self.service(_options = {})
  ->(reg) { new(reg.template_locator, reg.template_renderer) }
end

Public Instance Methods

render(controller) click to toggle source

Renders a controller based on the request path and the variables set in the controller instance.

@param [Controller] controller @return [Hash]

# File lib/racket/view_manager.rb, line 40
def render(controller)
  @renderer.render(controller, *get_view_and_layout(controller))
end

Private Instance Methods

get_view_and_layout(controller) click to toggle source

Returns the view and layout that should be used for rendering.

@param [Racket::Controller] controller @return [Array]

# File lib/racket/view_manager.rb, line 50
def get_view_and_layout(controller)
  view = @locator.get_view(controller)
  layout = view ? @locator.get_layout(controller) : nil
  [view, layout]
end