Class: GemMenu::Menu

Inherits:
Object
  • Object
show all
Defined in:
lib/gem_menu.rb

Constant Summary collapse

@@exit =
Entry.new('exit', method(:exit))
"<==  ".colorize(:light_blue)
"  ==>".colorize(:light_blue)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(title, entries, optional_args = nil) ⇒ Menu

Returns a new instance of Menu.



48
49
50
51
52
53
54
55
56
57
58
# File 'lib/gem_menu.rb', line 48

def initialize(title, entries, optional_args=nil)
    self.title = title
    self.entries = entries
    if optional_args
        optional_args.each do |key, value|
            self.send("#{key}=", value)
        end
    end
    self.menu_hash = {"x" => self.exit_method}
    self.set_choices
end

Instance Attribute Details

#entriesObject

Returns the value of attribute entries.



42
43
44
# File 'lib/gem_menu.rb', line 42

def entries
  @entries
end

Returns the value of attribute menu_hash.



42
43
44
# File 'lib/gem_menu.rb', line 42

def menu_hash
  @menu_hash
end

#parameterObject

Returns the value of attribute parameter.



42
43
44
# File 'lib/gem_menu.rb', line 42

def parameter
  @parameter
end

#previous_menuObject

Returns the value of attribute previous_menu.



42
43
44
# File 'lib/gem_menu.rb', line 42

def previous_menu
  @previous_menu
end

#titleObject

Returns the value of attribute title.



42
43
44
# File 'lib/gem_menu.rb', line 42

def title
  @title
end

Instance Method Details

#display_menuObject



92
93
94
95
96
97
98
# File 'lib/gem_menu.rb', line 92

def display_menu
    puts
    puts "#{self.menu_char_begin}#{self.title}#{self.menu_char_end}"
    menu_hash.sort.to_h.each do |user_choice, description|
      puts "#{user_choice.colorize(:light_yellow)}) #{description}"
    end
end

#exit_methodObject



60
61
62
# File 'lib/gem_menu.rb', line 60

def exit_method
    @@exit
end

#launch_selection(selection) ⇒ Object



111
112
113
# File 'lib/gem_menu.rb', line 111

def launch_selection(selection)
    self.menu_hash[selection].next_selection
end


64
65
66
# File 'lib/gem_menu.rb', line 64

def menu_char_begin
    @@menu_char_begin
end


68
69
70
# File 'lib/gem_menu.rb', line 68

def menu_char_end
    @@menu_char_end
end

#receive_inputObject



100
101
102
103
104
105
106
107
108
109
# File 'lib/gem_menu.rb', line 100

def receive_input
    selection = nil
    while !self.menu_hash.include?(selection)
      selection = gets.strip.downcase
      if !self.menu_hash.include?(selection)
        puts "Invalid selection"
      end
    end
    launch_selection(selection)
end

#retreive_selectionObject



81
82
83
84
85
86
# File 'lib/gem_menu.rb', line 81

def retreive_selection
    display_menu
    puts "\n"
    puts "Please make your selection:".colorize(:light_green)
    receive_input
end

#retrieve_selectionObject



88
89
90
# File 'lib/gem_menu.rb', line 88

def retrieve_selection
    retreive_selection
end

#set_choicesObject



72
73
74
75
76
77
78
79
# File 'lib/gem_menu.rb', line 72

def set_choices
    self.entries.each.with_index(1) do |entry, i|
        self.menu_hash[i.to_s] = entry
    end
    if self.previous_menu
        self.menu_hash['b'] = GemMenu::Entry.new('back', self.previous_menu)
    end
end