class Flatrack::Response

Handles flatrack responses

Constants

DEFAULT_FILE

@private

Attributes

layout[RW]
request[R]

Public Class Methods

new(request) click to toggle source

Initializes a response @param request [Flatrack::Request]

# File lib/flatrack/response.rb, line 13
def initialize(request)
  @request = request
end

Public Instance Methods

render(file: file_for(request.page), status: 200, layout: :layout) click to toggle source

Renders a response @param opts [Hash] @option opts [String] :file @option opts [Fixnum] :status @option opts [Symbol] :layout @return [Array] the rack response

# File lib/flatrack/response.rb, line 23
def render(file: file_for(request.page), status: 200, layout: :layout)
  @file, @status, @layout = file, status, layout
  page_content            = pre_render_page
  body << begin
    renderer_for_layout(@layout).render view, &proc { page_content }
  rescue Flatrack::FileNotFound
    page_content
  end
  [status, headers, body]
end
use_layout(layout) click to toggle source

Set the layout @param layout [String] @return [String]

# File lib/flatrack/response.rb, line 37
def use_layout(layout)
  @layout = layout.to_s
end

Private Instance Methods

body() click to toggle source
# File lib/flatrack/response.rb, line 51
def body
  @body ||= []
end
file_for(path) click to toggle source
# File lib/flatrack/response.rb, line 59
def file_for(path)
  if File.directory?(File.join config.site_root, 'pages', path)
    path = File.join(path, DEFAULT_FILE)
  end
  path
end
headers() click to toggle source
# File lib/flatrack/response.rb, line 55
def headers
  @headers ||= {}
end
pre_render_page() click to toggle source
# File lib/flatrack/response.rb, line 43
def pre_render_page
  renderer                = renderer_for_page(@file)
  content                 = renderer.render(view)
  @view                   = nil
  headers['Content-Type'] = FORMATS[renderer.format.to_s]
  content
end
renderer_for_layout(file) click to toggle source
# File lib/flatrack/response.rb, line 70
def renderer_for_layout(file)
  Template.find config.site_root, :layout, format, file
end
renderer_for_page(file) click to toggle source
# File lib/flatrack/response.rb, line 66
def renderer_for_page(file)
  Template.find config.site_root, :page, format, file
end
view() click to toggle source
# File lib/flatrack/response.rb, line 74
def view
  @view ||= View.new(self)
end