Class: SolidQueueUi::WebRoute
- Inherits:
-
Object
- Object
- SolidQueueUi::WebRoute
- Defined in:
- lib/solid_queue_ui/web/router.rb
Constant Summary collapse
- NAMED_SEGMENTS_PATTERN =
/\/([^\/]*):([^.:$\/]+)/
Instance Attribute Summary collapse
-
#block ⇒ Object
Returns the value of attribute block.
-
#name ⇒ Object
Returns the value of attribute name.
-
#pattern ⇒ Object
Returns the value of attribute pattern.
-
#request_method ⇒ Object
Returns the value of attribute request_method.
Instance Method Summary collapse
- #compile ⇒ Object
-
#initialize(request_method, pattern, block) ⇒ WebRoute
constructor
A new instance of WebRoute.
- #match(request_method, path) ⇒ Object
- #matcher ⇒ Object
Constructor Details
#initialize(request_method, pattern, block) ⇒ WebRoute
Returns a new instance of WebRoute.
72 73 74 75 76 |
# File 'lib/solid_queue_ui/web/router.rb', line 72 def initialize(request_method, pattern, block) @request_method = request_method @pattern = pattern @block = block end |
Instance Attribute Details
#block ⇒ Object
Returns the value of attribute block.
68 69 70 |
# File 'lib/solid_queue_ui/web/router.rb', line 68 def block @block end |
#name ⇒ Object
Returns the value of attribute name.
68 69 70 |
# File 'lib/solid_queue_ui/web/router.rb', line 68 def name @name end |
#pattern ⇒ Object
Returns the value of attribute pattern.
68 69 70 |
# File 'lib/solid_queue_ui/web/router.rb', line 68 def pattern @pattern end |
#request_method ⇒ Object
Returns the value of attribute request_method.
68 69 70 |
# File 'lib/solid_queue_ui/web/router.rb', line 68 def request_method @request_method end |
Instance Method Details
#compile ⇒ Object
82 83 84 85 86 87 88 89 90 |
# File 'lib/solid_queue_ui/web/router.rb', line 82 def compile if pattern.match?(NAMED_SEGMENTS_PATTERN) p = pattern.gsub(NAMED_SEGMENTS_PATTERN, '/\1(?<\2>[^$/]+)') Regexp.new("\\A#{p}\\Z") else pattern end end |
#match(request_method, path) ⇒ Object
92 93 94 95 96 97 98 99 100 |
# File 'lib/solid_queue_ui/web/router.rb', line 92 def match(request_method, path) case matcher when String {} if path == matcher else path_match = path.match(matcher) path_match&.named_captures&.transform_keys(&:to_sym) end end |
#matcher ⇒ Object
78 79 80 |
# File 'lib/solid_queue_ui/web/router.rb', line 78 def matcher @matcher ||= compile end |