class Peictt::Controller

Constants

DEFAULT_LAYOUT

Attributes

layout[RW]
request[R]

Public Class Methods

action(action_name) click to toggle source
# File lib/peictt/controller.rb, line 10
def self.action(action_name)
  -> (_env) { new.dispatch(action_name) }
end
asset_file(type, filename) click to toggle source
# File lib/peictt/controller.rb, line 36
def self.asset_file(type, filename)
  File.read File.join(APP_ROOT, "app", "assets", type, filename.to_s)
end
get_asset(filename) click to toggle source
# File lib/peictt/controller.rb, line 26
def self.get_asset(filename)
  file = ""
  if /^[a-z_]+\.css$/ =~ filename
    file = asset_file("css", filename)
  elsif /^[a-z_]+\.js$/ =~ filename
    file = asset_file("js", filename)
  end
  Rack::Response.new(file, 200, "Content-Type" => "text/css")
end

Public Instance Methods

controller_name() click to toggle source
# File lib/peictt/controller.rb, line 84
def controller_name
  self.class.to_s.gsub(/Controller$/, "").to_snake_case
end
dispatch(action) click to toggle source
# File lib/peictt/controller.rb, line 88
def dispatch(action)
  @action = action
  send(action)
  render(action) unless get_response
  get_response
end
get_response() click to toggle source
# File lib/peictt/controller.rb, line 48
def get_response
  @response
end
params() click to toggle source
# File lib/peictt/controller.rb, line 52
def params
  Peictt::Application.params
end
redirect_to(url) click to toggle source
# File lib/peictt/controller.rb, line 40
def redirect_to(url)
  response([], 302, "Location" => url)
end
render(*args) click to toggle source
# File lib/peictt/controller.rb, line 60
def render(*args)
  headers = Builder::HttpHeader.new(args.dup)
  template = Builder::Template.new(args.dup, controller_name, @action)
  response(render_template(template), headers.status, headers.headers)
end
render_html(template) click to toggle source
# File lib/peictt/controller.rb, line 74
def render_html(template)
  self.class.layout.render(self, template.locals) do
    Tilt::HamlTemplate.new(template.body).render(self, template.locals)
  end
end
render_json(template) click to toggle source
# File lib/peictt/controller.rb, line 80
def render_json(template)
  Parser::JSON.new(File.read(template.body)).render(self, template.locals)
end
render_template(template) click to toggle source
# File lib/peictt/controller.rb, line 66
def render_template(template)
  if template.html? || template.text?
    return render_html(template)
  else
    return render_json(template)
  end
end
response(body, status = 200, headers = {}) click to toggle source
# File lib/peictt/controller.rb, line 44
def response(body, status = 200, headers = {})
  @response = Rack::Response.new(body, status, headers)
end
session() click to toggle source
# File lib/peictt/controller.rb, line 56
def session
  Peictt::Application.session
end