class ActionNav::Base

Attributes

active_paths[R]
controller[R]

The controller that initialized this navigation.

@return [ActionController::Base]

Public Class Methods

item(id, &block) click to toggle source

Add a new item to this navigation

@param id [Symbol] @return [ActionNav::Item]

# File lib/action_nav/base.rb, line 57
def self.item(id, &block)
  item = Item.new(nil, id)
  item.dsl(&block) if block_given?
  items[id] = item
end
items() click to toggle source

Return all items for this navigation

@return [Hash]

# File lib/action_nav/base.rb, line 66
def self.items
  @items ||= {}
end
new(controller) click to toggle source

Initialize a new navigation

@param controller [ActionController::Base] @return [ActionNav::Base]

# File lib/action_nav/base.rb, line 12
def initialize(controller)
  @controller = controller
  @active_paths = []
end

Public Instance Methods

activate(*parts) click to toggle source

Add an active navigation by passing the full path to active item.

# File lib/action_nav/base.rb, line 38
def activate(*parts)
  @active_paths.push(parts)
end
Also aliased as: active
active(*parts)
Alias for: activate
active_path?(*parts) click to toggle source

Is the given active path?

@return [Boolean]

# File lib/action_nav/base.rb, line 46
def active_path?(*parts)
  @active_paths.any? do |path|
    a = path.size.times.map { |i| path[0, path.size - i] }
    a.include?(parts)
  end
end
items() click to toggle source

Return a full list of items for this instance as instances.

@return [Array<ActionNav::ItemInstance>]

# File lib/action_nav/base.rb, line 27
def items
  @items ||= self.class.items.each_with_object([]) do |(key, item), array|
    instance = ItemInstance.new(self, item)
    unless instance.hidden?
      array << instance
    end
  end
end