class ActionNav::ItemInstance

Attributes

item[R]

Public Class Methods

new(base, item) click to toggle source
# File lib/action_nav/item_instance.rb, line 8
def initialize(base, item)
  @base = base
  @item = item
end

Public Instance Methods

active?() click to toggle source
# File lib/action_nav/item_instance.rb, line 30
def active?
  @base.active_path?(*self.path)
end
count() click to toggle source
# File lib/action_nav/item_instance.rb, line 68
def count
  @item.count ? @count ||= @item.count.call : nil
end
description() click to toggle source
# File lib/action_nav/item_instance.rb, line 38
def description
  cache(:description) { parse(@item.description) }
end
description?() click to toggle source
# File lib/action_nav/item_instance.rb, line 42
def description?
  !!description
end
hidden?() click to toggle source
# File lib/action_nav/item_instance.rb, line 58
def hidden?
  cache(:hidden?) do
    if @item.hide_unless
      parse(@item.hide_unless, false) == false
    else
      false
    end
  end
end
icon() click to toggle source
# File lib/action_nav/item_instance.rb, line 50
def icon
  cache(:icon) { parse(@item.icon) }
end
icon?() click to toggle source
# File lib/action_nav/item_instance.rb, line 54
def icon?
  !!icon
end
id() click to toggle source
# File lib/action_nav/item_instance.rb, line 13
def id
  @item.id
end
items() click to toggle source
# File lib/action_nav/item_instance.rb, line 21
def items
  @item.children.each_with_object([]) do |(_, item), array|
    instance = ItemInstance.new(@base, item)
    unless instance.hidden?
      array << instance
    end
  end
end
path() click to toggle source
# File lib/action_nav/item_instance.rb, line 17
def path
  @item.path
end
title() click to toggle source
# File lib/action_nav/item_instance.rb, line 34
def title
  cache(:title) { parse(@item.title, ActiveSupport::Inflector.humanize(@item.id.to_s)) }
end
url() click to toggle source
# File lib/action_nav/item_instance.rb, line 46
def url
  cache(:url) { parse(@item.url, "/")}
end

Private Instance Methods

cache(name, &block) click to toggle source
# File lib/action_nav/item_instance.rb, line 84
def cache(name, &block)
  @cache ||= {}
  if @cache.keys.include?(name)
    @cache[name]
  else
    @cache[name] = block.call
  end
end
parse(item, default = nil) click to toggle source
# File lib/action_nav/item_instance.rb, line 74
def parse(item, default = nil)
  if item.is_a?(Proc)
    @base.controller.instance_eval(&item)
  elsif item
    item.to_s
  else
    default
  end
end