Class: Flame::Router::Route
- Inherits:
-
Object
- Object
- Flame::Router::Route
- Defined in:
- lib/flame/route.rb
Overview
Class for Route in Router.routes
Instance Attribute Summary collapse
-
#action ⇒ Object
readonly
Returns the value of attribute action.
-
#controller ⇒ Object
readonly
Returns the value of attribute controller.
-
#method ⇒ Object
readonly
Returns the value of attribute method.
-
#path ⇒ Object
readonly
Returns the value of attribute path.
-
#path_parts ⇒ Object
readonly
Returns the value of attribute path_parts.
Class Method Summary collapse
Instance Method Summary collapse
-
#arguments(request_parts) ⇒ Object
Extract arguments from request_parts for ‘execute`.
-
#assign_arguments(args = {}) ⇒ Object
Assign arguments to path for ‘Controller.path_to`.
-
#compare_attributes(attrs) ⇒ Object
Compare attributes for ‘Router.find_route`.
- #freeze ⇒ Object
-
#initialize(controller, action, method, path) ⇒ Route
constructor
A new instance of Route.
Constructor Details
#initialize(controller, action, method, path) ⇒ Route
Returns a new instance of Route.
12 13 14 15 16 17 18 19 20 21 |
# File 'lib/flame/route.rb', line 12 def initialize(controller, action, method, path) @controller = controller @action = action @method = method.to_sym.upcase ## MAKE PATH @path = path Validators::ArgumentsValidator.new(@controller, @path, @action).valid? @path_parts = @path.to_s.split('/').reject(&:empty?) freeze end |
Instance Attribute Details
#action ⇒ Object (readonly)
Returns the value of attribute action.
10 11 12 |
# File 'lib/flame/route.rb', line 10 def action @action end |
#controller ⇒ Object (readonly)
Returns the value of attribute controller.
10 11 12 |
# File 'lib/flame/route.rb', line 10 def controller @controller end |
#method ⇒ Object (readonly)
Returns the value of attribute method.
10 11 12 |
# File 'lib/flame/route.rb', line 10 def method @method end |
#path ⇒ Object (readonly)
Returns the value of attribute path.
10 11 12 |
# File 'lib/flame/route.rb', line 10 def path @path end |
#path_parts ⇒ Object (readonly)
Returns the value of attribute path_parts.
10 11 12 |
# File 'lib/flame/route.rb', line 10 def path_parts @path_parts end |
Class Method Details
.path_merge(*parts) ⇒ Object
59 60 61 |
# File 'lib/flame/route.rb', line 59 def self.path_merge(*parts) parts.join('/').gsub(%r{\/{2,}}, '/') end |
Instance Method Details
#arguments(request_parts) ⇒ Object
Extract arguments from request_parts for ‘execute`
47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/flame/route.rb', line 47 def arguments(request_parts) @path_parts.each_with_index.with_object({}) do |(path_part, i), args| request_part = request_parts[i] path_part_opt = path_part[1] == ARG_CHAR_OPT next args unless path_part[0] == ARG_CHAR break args if path_part_opt && request_part.nil? args[ path_part[(path_part_opt ? 2 : 1)..-1].to_sym ] = URI.decode(request_part) end end |
#assign_arguments(args = {}) ⇒ Object
Assign arguments to path for ‘Controller.path_to`
40 41 42 43 |
# File 'lib/flame/route.rb', line 40 def assign_arguments(args = {}) parts = @path_parts.map { |part| assign_argument(part, args) } self.class.path_merge(parts.unshift('')) end |
#compare_attributes(attrs) ⇒ Object
Compare attributes for ‘Router.find_route`
31 32 33 34 35 36 |
# File 'lib/flame/route.rb', line 31 def compare_attributes(attrs) attrs.each do |name, value| next true if compare_attribute(name, value) break false end end |
#freeze ⇒ Object
23 24 25 26 27 |
# File 'lib/flame/route.rb', line 23 def freeze @path.freeze @path_parts.freeze super end |