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