Module: RailsNavigation::Matcher
- Defined in:
- lib/rails_navigation/matcher.rb
Class Method Summary collapse
- .check_action(action_name, str) ⇒ Object
- .check_controller(controller_name, str) ⇒ Object
- .check_parameters(params, str) ⇒ Object
- .match_multiple_with_or?(controller_name, action_name, params, arr) ⇒ Boolean
- .match_single?(controller_name, action_name, params, str) ⇒ Boolean
Class Method Details
.check_action(action_name, str) ⇒ Object
8 9 10 11 |
# File 'lib/rails_navigation/matcher.rb', line 8 def self.check_action(action_name, str) result = Array(str.match(/#([a-z_\-]+)/))[1] result ? (result == action_name) : true end |
.check_controller(controller_name, str) ⇒ Object
3 4 5 6 |
# File 'lib/rails_navigation/matcher.rb', line 3 def self.check_controller(controller_name, str) result = Array(str.match(/^([a-z_\-]+)/))[1] result ? (result == controller_name) : true end |
.check_parameters(params, str) ⇒ Object
13 14 15 16 17 18 19 20 21 |
# File 'lib/rails_navigation/matcher.rb', line 13 def self.check_parameters(params, str) result = Array(str.match(/\?([!a-z0-9&_\-=]+)/))[1] if result key, value = result.split('=') result.include?('=') ? value == params[key.to_sym] : result == params[:id] else true end end |
.match_multiple_with_or?(controller_name, action_name, params, arr) ⇒ Boolean
27 28 29 |
# File 'lib/rails_navigation/matcher.rb', line 27 def self.match_multiple_with_or?(controller_name, action_name, params, arr) [*arr].any? { |str| match_single?(controller_name, action_name, params, str) } end |
.match_single?(controller_name, action_name, params, str) ⇒ Boolean
23 24 25 |
# File 'lib/rails_navigation/matcher.rb', line 23 def self.match_single?(controller_name, action_name, params, str) check_controller(controller_name, str) && check_action(action_name, str) && check_parameters(params, str) end |