Class: Waiter::Menu::Item

Inherits:
Object
  • Object
show all
Defined in:
lib/waiter/menu/item.rb

Direct Known Subclasses

Section

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(parent, name, path = {}, options = {}, &block) ⇒ Item

Returns a new instance of Item.



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/waiter/menu/item.rb', line 13

def initialize(parent, name, path = {}, options = {}, &block)
  @parent = parent
  @name = name
  @path = complete_path_for(path)
  @options = options

  collect_controllers

  @options.reverse_merge!(parent.options || {})

  if block_given?
    @submenu = Menu.new([@parent.name, name].compact, @parent.context, @options.dup)
    @submenu.parent = self
    @submenu.update(&block)
  end
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



9
10
11
# File 'lib/waiter/menu/item.rb', line 9

def name
  @name
end

#optionsObject

Returns the value of attribute options.



10
11
12
# File 'lib/waiter/menu/item.rb', line 10

def options
  @options
end

#parentObject (readonly)

Returns the value of attribute parent.



9
10
11
# File 'lib/waiter/menu/item.rb', line 9

def parent
  @parent
end

#pathObject (readonly)

Returns the value of attribute path.



9
10
11
# File 'lib/waiter/menu/item.rb', line 9

def path
  @path
end

Returns the value of attribute submenu.



9
10
11
# File 'lib/waiter/menu/item.rb', line 9

def submenu
  @submenu
end

Instance Method Details

#[](name) ⇒ Object



46
47
48
49
# File 'lib/waiter/menu/item.rb', line 46

def [](name)
  return nil if items.empty?
  items[name]
end

#column?Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/waiter/menu/item.rb', line 34

def column?
  false
end

#controllerObject



63
64
65
# File 'lib/waiter/menu/item.rb', line 63

def controller
  @controller ||= find_controller
end

#controllersObject



67
68
69
# File 'lib/waiter/menu/item.rb', line 67

def controllers
  options[:controllers]
end

#empty?Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/waiter/menu/item.rb', line 42

def empty?
  items.empty?
end

#inspectObject



86
87
88
# File 'lib/waiter/menu/item.rb', line 86

def inspect
  "#<#{self.class.name}:#{'0x%x' % (36971870 << 1)} name=#{name.inspect} options=#{options.inspect} parent=#{parent.inspect} submenu=#{submenu.inspect}>"
end

#item_titleObject



59
60
61
# File 'lib/waiter/menu/item.rb', line 59

def item_title
  translate(name)
end

#itemsObject



38
39
40
# File 'lib/waiter/menu/item.rb', line 38

def items
  @submenu.try(:items) || []
end


55
56
57
# File 'lib/waiter/menu/item.rb', line 55

def menu_title
  translate(:title)
end

#section?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/waiter/menu/item.rb', line 30

def section?
  false
end

#selected?Boolean

Returns:

  • (Boolean)


71
72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/waiter/menu/item.rb', line 71

def selected?
  return name == options[:selected] if options[:selected]

  current_controller = context.params[:controller]

  if wildcard_controllers.any?
    return true if wildcard_controllers.any? do |c|
      r = Regexp.new('\A' + c.sub(%r{/\*\Z}, '(/*)?').gsub('*', '.*'))
      r =~ current_controller
    end
  end

  controllers.include?(current_controller)
end

Returns:

  • (Boolean)


51
52
53
# File 'lib/waiter/menu/item.rb', line 51

def submenu?
  submenu.present?
end