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

Protected Class Methods

gte_rails3?() click to toggle source
# File lib/simple_navigation/adapters/rails.rb, line 62
def self.gte_rails3?
  ::Rails::VERSION::MAJOR >= 3
end
rails_env() click to toggle source
# File lib/simple_navigation/adapters/rails.rb, line 58
def self.rails_env
  gte_rails3? ? ::Rails.env : ::RAILS_ENV
end
rails_root() click to toggle source
# File lib/simple_navigation/adapters/rails.rb, line 54
def self.rails_root
  gte_rails3? ? ::Rails.root : ::RAILS_ROOT
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 82
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 77
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 66
def template_from(controller)
  if controller.respond_to?(:view_context)
    controller.view_context
  else
    controller.instance_variable_get(:@template)
  end
end