Sha256: eb40da01e74e47c4151523fa93e7011b9065f1d3b6fabecf80522b7ed9bc2c54
Contents?: true
Size: 1.02 KB
Versions: 20
Compression:
Stored size: 1.02 KB
Contents
module Shogun class Dispatch class Lookup include Adamantium attr_reader :routes private :routes def initialize(routes:, verb:, path:) @routes = routes @verb = verb @path = path end def request "#{@verb} #{@path}" end memoize :request def payload if match.captures.any? match.names.zip(match.captures).to_h else {} end end memoize :payload def to_route regular || regexp || Route::Null.new end memoize :to_route private def regexp routes[pattern] end memoize :regexp private def regular routes[request] end memoize :regular private def match request.match(pattern) end memoize :match private def pattern routes.keys.detect(NO_MATCH) do |key| if key.is_a?(Regexp) then request =~ key else next end end end memoize :pattern end end end
Version data entries
20 entries across 20 versions & 1 rubygems