class Salen::Request
Attributes
headers[RW]
params[RW]
route_body[RW]
status[RW]
Public Class Methods
new(env)
click to toggle source
Calls superclass method
# File lib/salen/app.rb, line 43 def initialize env @headers = {'Content-Type' => 'text/html'} @status = 200 super env end
Public Instance Methods
body(app_class)
click to toggle source
# File lib/salen/app.rb, line 66 def body app_class dispatch_route(app_class.routes.fetch(request_method.downcase.to_sym), path) [instance_eval(&route_body.last).to_s] end
haml(template)
click to toggle source
# File lib/salen/app.rb, line 54 def haml template render :haml, template_path(template, '.html.haml') end
redirect_to(uri)
click to toggle source
# File lib/salen/app.rb, line 49 def redirect_to uri @headers = { "Location" => uri } @status = 301 end
render(engin, template)
click to toggle source
# File lib/salen/app.rb, line 62 def render engin, template Tilt.new(template).render end
template_path(template, extention)
click to toggle source
# File lib/salen/app.rb, line 58 def template_path template, extention File.join('views', template + extention) end
Private Instance Methods
dispatch_route(routes, path)
click to toggle source
# File lib/salen/app.rb, line 73 def dispatch_route routes, path @params = Hash[params_values(routes).zip(params_keys)].invert end
params_keys()
click to toggle source
# File lib/salen/app.rb, line 77 def params_keys keys = [] route_body.first.gsub %r<:([^/])+> do |k,v| keys.push k.delete!(':').to_sym end keys end
params_values(routes)
click to toggle source
# File lib/salen/app.rb, line 85 def params_values routes vals = [] @route_body = routes.detect do |k,v| path.match Regexp.new("^"+k.gsub(%r<:([^/])+>, "([^/])+")+"$") do |md| vals = md[1..-1] end end vals end