Class: Paquette::Routes::Route

Inherits:
Object
  • Object
show all
Defined in:
lib/paquette/routes.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(method, pattern, block) ⇒ Route

Returns a new instance of Route.



8
9
10
11
12
# File 'lib/paquette/routes.rb', line 8

def initialize(method, pattern, block)
  @method = method
  @pattern = Mustermann.new(pattern)
  @block = block
end

Instance Attribute Details

#blockObject (readonly)

Returns the value of attribute block.



6
7
8
# File 'lib/paquette/routes.rb', line 6

def block
  @block
end

#methodObject (readonly)

Returns the value of attribute method.



6
7
8
# File 'lib/paquette/routes.rb', line 6

def method
  @method
end

#patternObject (readonly)

Returns the value of attribute pattern.



6
7
8
# File 'lib/paquette/routes.rb', line 6

def pattern
  @pattern
end

Instance Method Details

#match?(request) ⇒ Boolean

Returns:

  • (Boolean)


14
15
16
# File 'lib/paquette/routes.rb', line 14

def match?(request)
  @method == request.request_method && @pattern.match(request.path_info)
end

#params(request) ⇒ Object



18
19
20
# File 'lib/paquette/routes.rb', line 18

def params(request)
  @pattern.params(request.path_info)
end

#perform_action(instance, request) ⇒ Object



22
23
24
25
26
27
28
29
30
# File 'lib/paquette/routes.rb', line 22

def perform_action(instance, request)
  # Extract params and pass them as keyword arguments
  route_params = params(request)
  # Also include query parameters
  query_params = request.params
  # Convert string keys to symbols for keyword arguments
  symbol_params = route_params.merge(query_params).transform_keys(&:to_sym)
  instance.instance_exec(**symbol_params, &@block)
end