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