class Dominate::Widget::Middleware

Public Class Methods

new(app) click to toggle source
# File lib/dominate/widget/middleware.rb, line 5
def initialize(app)
  @app = app
end

Public Instance Methods

call(env) click to toggle source
# File lib/dominate/widget/middleware.rb, line 9
def call env
  dup.call! env
end
call!(env) click to toggle source
# File lib/dominate/widget/middleware.rb, line 13
def call! env
  @env = env

  if widget_path
    widget_name, widget_event, event = Widget.load_all @app, req, res

    event.trigger widget_name, widget_event, req.params
    # res.write "$('head > meta[name=csrf-token]').attr('content', '#{csrf_token}');"
    res.write '$(document).trigger("page:change");'
    res.finish
  else
    res
  end
end

Private Instance Methods

path() click to toggle source
# File lib/dominate/widget/middleware.rb, line 48
def path
  @env['PATH_INFO']
end
req() click to toggle source
# File lib/dominate/widget/middleware.rb, line 40
def req
  @req ||= Rack::Request.new(@env)
end
res() click to toggle source
# File lib/dominate/widget/middleware.rb, line 30
def res
  @res ||= begin
    if not widget_path
      @app.call(req.env)
    else
      Cuba::Response.new
    end
  end
end
widget_path() click to toggle source
# File lib/dominate/widget/middleware.rb, line 44
def widget_path
  path[Regexp.new("^#{Dominate.config.widget_url}($|\\?.*)")]
end