class SimpleNavigation::Adapters::Rails

Attributes

controller[R]
template[R]

Public Class Methods

new(context) click to toggle source
# File lib/simple_navigation/adapters/rails.rb, line 14
def initialize(context)
  @controller = extract_controller_from context
  @template = template_from @controller
  @request = @template.request if @template
end
register() click to toggle source
# File lib/simple_navigation/adapters/rails.rb, line 6
def self.register
  SimpleNavigation.set_env(::Rails.root, ::Rails.env)
  ActionController::Base.send(:include, SimpleNavigation::Helpers)
  SimpleNavigation::Helpers.instance_methods.each do |m|
    ActionController::Base.send(:helper_method, m.to_sym)
  end
end

Public Instance Methods

content_tag(type, content, options = {}) click to toggle source
# File lib/simple_navigation/adapters/rails.rb, line 48
def content_tag(type, content, options = {})
  template && template.content_tag(type, html_safe(content), options)
end
context_for_eval() click to toggle source
# File lib/simple_navigation/adapters/rails.rb, line 34
def context_for_eval
  template   ||
  controller ||
  fail('no context set for evaluation the config file')
end
current_page?(url) click to toggle source
# File lib/simple_navigation/adapters/rails.rb, line 40
def current_page?(url)
  template && template.current_page?(url)
end
request_path() click to toggle source
# File lib/simple_navigation/adapters/rails.rb, line 30
def request_path
  request ? request.path : ''
end
request_uri() click to toggle source
# File lib/simple_navigation/adapters/rails.rb, line 20
def request_uri
  return '' unless request

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

Protected Instance Methods

extract_controller_from(context) click to toggle source

Extracts a controller from the context.

# File lib/simple_navigation/adapters/rails.rb, line 70
def extract_controller_from(context)
  if context.respond_to?(:controller)
    context.controller || context
  else
    context
  end
end
html_safe(input) click to toggle source

Marks the specified input as #html_safe (for Rails3). Does nothing if #html_safe is not defined on input.

# File lib/simple_navigation/adapters/rails.rb, line 65
def html_safe(input)
  input.respond_to?(:html_safe) ? input.html_safe : input
end
template_from(controller) click to toggle source
# File lib/simple_navigation/adapters/rails.rb, line 54
def template_from(controller)
  if controller.respond_to?(:view_context)
    controller.view_context
  else
    controller.instance_variable_get(:@template)
  end
end