class PlainRouter::Method
Public Class Methods
new()
click to toggle source
# File lib/plainrouter/method.rb, line 4 def initialize @router @data = {} @path = [] @path_seen = {} end
Public Instance Methods
add(methods, path, opaque = nil)
click to toggle source
# File lib/plainrouter/method.rb, line 11 def add(methods, path, opaque = nil) router = nil if @path_seen[path].nil? @path.push(path) @path_seen[path] = true end @data[path] ||= [] methods = [methods] unless methods.instance_of?(Array) methods.each do |method| @data[path].push([method, opaque]) end end
build_router()
click to toggle source
# File lib/plainrouter/method.rb, line 47 def build_router router = PlainRouter.new @path.each do |path| router.add(path, @data[path]) end return router end
match(request_method, path)
click to toggle source
# File lib/plainrouter/method.rb, line 24 def match(request_method, path) router ||= self.build_router if response = router.match(path) patterns, captured = nil, nil if response.last.instance_of?(Array) patterns = response else patterns = response[0] captured = response[1] end patterns.each do |pattern| if pattern[0].nil? || request_method == pattern[0] if captured.nil? return pattern[1] else return pattern[1], captured end end end end return end