class Nehm::UI::Menu
Public Class Methods
new() { |self| ... }
click to toggle source
# File lib/nehm/menu.rb, line 5 def initialize @choices = {} @inc_index = 1 @items = [] yield self select end
Public Instance Methods
call_selected_block(selected)
click to toggle source
# File lib/nehm/menu.rb, line 64 def call_selected_block(selected) loop do if @choices.keys.include? selected block = @choices[selected] block.call unless block.nil? break else selected = UI.ask "You must choose one of [#{@choices.keys.join(', ')}]" end end end
choice(index, desc, &block)
click to toggle source
# File lib/nehm/menu.rb, line 14 def choice(index, desc, &block) # Visual index - index that you see in menu # Select index - index than can be selected # For example, if you use ':added' index # In menu you see 'A', but you can select it by number # You receive a warning though visual_index = select_index = index if index == :inc visual_index = select_index = @inc_index.to_s @inc_index += 1 end if index == :added visual_index = 'A'.green select_index = @inc_index.to_s @inc_index += 1 end @choices[select_index] = block @items << "#{visual_index} #{desc}" end
header=(value)
click to toggle source
# File lib/nehm/menu.rb, line 38 def header=(value) @items.unshift(value) end
newline()
click to toggle source
# File lib/nehm/menu.rb, line 42 def newline @items << "\n" end
select()
click to toggle source
# File lib/nehm/menu.rb, line 46 def select # Add exit option newline choice('e', 'Exit'.red) { UI.term } # Output items @items.each do |item| UI.say item end UI.newline selected = UI.ask('Enter option'.yellow.freeze) call_selected_block(selected) UI.newline end