Class: SimpleNavigation::Adapters::Rails

Inherits:
Base
  • Object
show all
Defined in:
lib/simple_navigation/adapters/rails.rb

Instance Attribute Summary collapse

Attributes inherited from Base

#context, #request

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(context) ⇒ Rails

rubocop:disable Lint/MissingSuper



27
28
29
30
31
# File 'lib/simple_navigation/adapters/rails.rb', line 27

def initialize(context) # rubocop:disable Lint/MissingSuper
  @controller = extract_controller_from context
  @template = template_from @controller
  @request = @template.request if @template
end

Instance Attribute Details

#controllerObject (readonly)

Returns the value of attribute controller.



6
7
8
# File 'lib/simple_navigation/adapters/rails.rb', line 6

def controller
  @controller
end

#templateObject (readonly)

Returns the value of attribute template.



6
7
8
# File 'lib/simple_navigation/adapters/rails.rb', line 6

def template
  @template
end

Class Method Details

.registerObject



8
9
10
11
12
13
14
15
16
17
18
# File 'lib/simple_navigation/adapters/rails.rb', line 8

def self.register
  SimpleNavigation.set_env(::Rails.root, ::Rails.env)

  # Autoloading in initializers is deprecated on rails 6.0
  # This delays the hook initialization using the on_load
  # hooks, but does not change behaviour for existing
  # rails versions.
  ActiveSupport.on_load(:action_controller_base) do
    SimpleNavigation::Adapters::Rails.register_controller_helpers
  end
end

.register_controller_helpersObject



20
21
22
23
24
25
# File 'lib/simple_navigation/adapters/rails.rb', line 20

def self.register_controller_helpers
  ActionController::Base.include SimpleNavigation::Helpers
  SimpleNavigation::Helpers.instance_methods.each do |m|
    ActionController::Base.send(:helper_method, m.to_sym)
  end
end

Instance Method Details

#content_tag(type, content, options = {}) ⇒ Object



61
62
63
# File 'lib/simple_navigation/adapters/rails.rb', line 61

def (type, content, options = {})
  template&.(type, html_safe(content), options)
end

#context_for_evalObject



47
48
49
50
51
# File 'lib/simple_navigation/adapters/rails.rb', line 47

def context_for_eval
  template ||
    controller ||
    raise('no context set for evaluation the config file')
end

#current_page?(url) ⇒ Boolean

Returns:

  • (Boolean)


53
54
55
# File 'lib/simple_navigation/adapters/rails.rb', line 53

def current_page?(url)
  template&.current_page?(url)
end


57
58
59
# File 'lib/simple_navigation/adapters/rails.rb', line 57

def link_to(name, url, options = {})
  template&.link_to(link_title(name), url, options)
end

#request_pathObject



43
44
45
# File 'lib/simple_navigation/adapters/rails.rb', line 43

def request_path
  request ? request.path : ''
end

#request_uriObject



33
34
35
36
37
38
39
40
41
# File 'lib/simple_navigation/adapters/rails.rb', line 33

def request_uri
  return '' unless request

  if request.respond_to?(:fullpath)
    request.fullpath
  else
    request.request_uri
  end
end