Sha256: 09d3869653c1ae788456409ae4aa0d6e761d283e68ba421c384330f5928d05a1

Contents?: true

Size: 635 Bytes

Versions: 6

Compression:

Stored size: 635 Bytes

Contents

$:.unshift File.dirname(__FILE__)

require 'rack_interface/route'

class Usher
  module Interface
    class RackInterface
      
      Request = Struct.new(:path, :method)
      
      def initialize
        @routes = Usher.new
      end
      
      def add(path, options = {})
        @routes.add_route(path, options)
      end

      def reset!
        @routes.reset!
      end

      def call(env)
        (path, params) = @routes.recognize(Request.new(env['REQUEST_URI'], env['REQUEST_METHOD']))
        env['usher.params'] = params.inject({}){|h,(k,v)| h[k]=v; h }
        path.route.params.call(env)
      end

    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
joshbuddy-usher-0.0.2 lib/usher/interface/rack_interface.rb
joshbuddy-usher-0.0.3 lib/usher/interface/rack_interface.rb
joshbuddy-usher-0.1.0 lib/usher/interface/rack_interface.rb
joshbuddy-usher-0.1.1 lib/usher/interface/rack_interface.rb
joshbuddy-usher-0.1.2 lib/usher/interface/rack_interface.rb
joshbuddy-usher-0.2.0 lib/usher/interface/rack_interface.rb