class Pendragon::Router::Route

Class for delegation based structure. @!visibility private

Attributes

path[R]

@!visibility private

pattern[RW]

@!visibility private

request_method[R]

@!visibility private

Public Class Methods

new(method:, pattern:, application:, **attributes) click to toggle source

@!visibility private

Calls superclass method
# File lib/pendragon/router.rb, line 126
def initialize(method:, pattern:, application:, **attributes)
  super(attributes)

  @app            = application
  @path           = pattern
  @pattern        = Mustermann.new(pattern)
  @executable     = to_executable
  @request_method = method.to_s.upcase
end

Public Instance Methods

exec(env) click to toggle source

@!visibility private

# File lib/pendragon/router.rb, line 137
def exec(env)
  return @app.call(env) unless executable?
  path_info = env[Constants::Env::PATH_INFO]
  params = pattern.params(path_info)
  captures = pattern.match(path_info).captures
  Context.new(env, params: params, captures: captures).trigger(@executable)
end

Private Instance Methods

executable?() click to toggle source

@!visibility private

# File lib/pendragon/router.rb, line 148
def executable?
  @app.kind_of?(Proc)
end
to_executable() click to toggle source

@!visibility private

# File lib/pendragon/router.rb, line 153
def to_executable
  return @app unless executable?
  Context.to_method(request_method, path, @app)
end