Class: ActionNav::Base
- Inherits:
-
Object
- Object
- ActionNav::Base
- Defined in:
- lib/action_nav/base.rb
Instance Attribute Summary collapse
-
#active_paths ⇒ Object
readonly
Returns the value of attribute active_paths.
-
#controller ⇒ ActionController::Base
readonly
The controller that initialized this navigation.
Class Method Summary collapse
-
.item(id, &block) ⇒ ActionNav::Item
Add a new item to this navigation.
-
.items ⇒ Hash
Return all items for this navigation.
Instance Method Summary collapse
-
#activate(*parts) ⇒ Object
(also: #active)
Add an active navigation by passing the full path to active item.
-
#active_path?(*parts) ⇒ Boolean
Is the given active path?.
-
#initialize(controller) ⇒ ActionNav::Base
constructor
Initialize a new navigation.
-
#items ⇒ Array<ActionNav::ItemInstance>
Return a full list of items for this instance as instances.
Constructor Details
#initialize(controller) ⇒ ActionNav::Base
Initialize a new navigation
12 13 14 15 |
# File 'lib/action_nav/base.rb', line 12 def initialize(controller) @controller = controller @active_paths = [] end |
Instance Attribute Details
#active_paths ⇒ Object (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 |
#controller ⇒ ActionController::Base (readonly)
The controller that initialized this navigation.
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
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 |
.items ⇒ Hash
Return all items for this navigation
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?
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 |
#items ⇒ Array<ActionNav::ItemInstance>
Return a full list of items for this instance as instances.
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 |