Class: ActionNav::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/action_nav/base.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(controller) ⇒ ActionNav::Base

Initialize a new navigation

Parameters:

  • controller (ActionController::Base)


12
13
14
15
# File 'lib/action_nav/base.rb', line 12

def initialize(controller)
  @controller = controller
  @active_paths = []
end

Instance Attribute Details

#active_pathsObject (readonly)

Returns the value of attribute active_paths.



21
22
23
# File 'lib/action_nav/base.rb', line 21

def active_paths
  @active_paths
end

#controllerActionController::Base (readonly)

The controller that initialized this navigation.

Returns:

  • (ActionController::Base)


20
21
22
# File 'lib/action_nav/base.rb', line 20

def controller
  @controller
end

Class Method Details

.item(id, &block) ⇒ ActionNav::Item

Add a new item to this navigation

Parameters:

  • id (Symbol)

Returns:



57
58
59
60
61
# 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

.itemsHash

Return all items for this navigation

Returns:

  • (Hash)


66
67
68
# File 'lib/action_nav/base.rb', line 66

def self.items
  @items ||= {}
end

Instance Method Details

#activate(*parts) ⇒ Object Also known as: active

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



38
39
40
# File 'lib/action_nav/base.rb', line 38

def activate(*parts)
  @active_paths.push(parts)
end

#active_path?(*parts) ⇒ Boolean

Is the given active path?

Returns:

  • (Boolean)


46
47
48
49
50
51
# 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

#itemsArray<ActionNav::ItemInstance>

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

Returns:



27
28
29
30
31
32
33
34
# 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