class MenuMaker::Menu
Attributes
current_depth[W]
Public Class Methods
new(renderer) { |self| ... }
click to toggle source
# File lib/menu_maker/menu.rb, line 5 def initialize(renderer) @items = {} @renderer = renderer yield self if block_given? end
Public Instance Methods
add(title, *paths, **options) { |current_submenu| ... }
click to toggle source
# File lib/menu_maker/menu.rb, line 20 def add(title, *paths, **options) @items[title] = MenuItem.new(title, *paths, options) @current_item = title yield current_submenu if block_given? self end
each(&block)
click to toggle source
# File lib/menu_maker/menu.rb, line 16 def each(&block) items.each(&block) end
items()
click to toggle source
# File lib/menu_maker/menu.rb, line 12 def items @items.values end
render()
click to toggle source
# File lib/menu_maker/menu.rb, line 29 def render renderer_for(current_depth).call(self) end
Private Instance Methods
current_depth()
click to toggle source
# File lib/menu_maker/menu.rb, line 68 def current_depth @current_depth || 1 end
current_item()
click to toggle source
# File lib/menu_maker/menu.rb, line 39 def current_item @items[@current_item] end
next_depth()
click to toggle source
# File lib/menu_maker/menu.rb, line 72 def next_depth current_depth + 1 end
renderer_for(depth)
click to toggle source
# File lib/menu_maker/menu.rb, line 54 def renderer_for(depth) renderer = if @renderer.respond_to? :for_depth @renderer.for_depth(depth) else @renderer end unless renderer.respond_to? :call raise MenuError, "Couldn't find renderer for depth #{depth}" end renderer end