Module: RailsNavigation::Matcher

Defined in:
lib/rails_navigation/matcher.rb

Class Method Summary collapse

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

Returns:

  • (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

Returns:

  • (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