generated from DPI-WE/ruby-cli-template
-
Notifications
You must be signed in to change notification settings - Fork 0
/
list.rb
133 lines (119 loc) · 3.02 KB
/
list.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
class List
attr_accessor :name, :notes
def initialize
@name = name
@notes = []
end
def user_name
puts "Hello User. Please enter your name."
self.name = gets.chomp.capitalize
puts "\n"
return list_menu
end
def list_menu
loop do
puts "\n"
puts "Hello #{self.name}! What would you like to do today?"
puts "1. Add a note"
puts "2. Modify a note"
puts "3. Delete a note"
puts "4. Show list"
puts "5. Quit"
menu_option = gets.chomp.to_i
case menu_option
when 1
add_note
break
when 2
modify_note
break
when 3
delete_note
break
when 4
show_list
break
when 5
puts "We'll finish your list next time! Goodbye!"
break
else
puts "\n"
puts "Did you mean to make a choice? Please choose a number between 1-4."
puts "\n"
end
end
end
def add_note
loop do
puts "\n"
puts "What would you like to add to your list?"
user_note = gets.chomp.gsub(/\b\w/) {|word| word.capitalize }
puts "\n"
puts "Do you want to add '#{user_note}' to #{self.name}'s list?"
puts "Enter 1 = Yes"
puts "Enter 2 = No"
add_choice = gets.chomp.to_i
case add_choice
when 1
@notes.push(user_note)
puts "'#{user_note}' has been added to #{self.name}'s list!"
puts "\n"
return list_menu
when 2
puts "\n"
puts "Let's update your request."
else
puts "\n"
puts "Invalid option."
end
end
end
def modify_note
puts "\n"
puts "Which note would you like to modify?"
@notes.each_with_index do |note, index|
puts "#{index + 1}. #{note}"
end
note_to_replace = gets.chomp.to_i
if note_to_replace.between?(1, @notes.length)
puts "\n"
puts "What would you like to enter instead?"
new_note = gets.chomp.gsub(/\b\w/) {|word| word.capitalize }
@notes.delete_at(note_to_replace - 1)
@notes.push(new_note)
puts "\n"
puts "Note ##{note_to_replace} was replaced with '#{new_note}!'"
return list_menu
else
puts "\n"
puts "Invalid choice. Please select a valid note number."
return modify_note
end
end
def delete_note
puts "\n"
puts "Here is your list. Which note would you like to delete?"
@notes.each_with_index do |note, index|
puts "#{index + 1}. #{note}"
end
delete_choice = gets.chomp.to_i
if delete_choice.between?(1, @notes.length)
@notes.delete_at(delete_choice - 1)
puts "\n"
puts "Note ##{delete_choice} has been deleted from #{self.name}'s list!"
else
puts "\n"
puts "Invalid choice. Please select a valid note number."
delete_note
end
return list_menu
end
def show_list
puts "\n"
puts "Here is #{self.name}'s list!"
@notes.each_with_index do |note, index|
puts "#{index + 1}. #{note}"
end
return list_menu
end
end