Case loop / Program quits

Hello everyone!
I’m trying to make a little grocery list to practice. My intention is to
make basically an array that you can add to, remove and display items.
My problem starts when after a person adds an item to the array for
example and the options come up again, instead of going back into the
cases the program just quits.
It kinda is like a loop where it keeps going around and around… my
program just doesn’t wanna do that. :smiley:
Could someone explain where I went wrong with my codes?

list = Array.new(0)

display_proc = Proc.new {|x| puts x}

puts “What would you like to do with your shopping list?”

def opening_options
puts
puts “–ADD”
puts “–REMOVE”
puts “–CLEAR”
puts “–DISPLAY”
puts “–EXIT”

@options = gets.chomp.downcase
end

opening_options

case @options
when “add”
puts “What item would you like to add?”
add = gets.chomp
list << add unless list.include?(add)

opening_options

when “remove”
puts “What item would you like to remove?”
list.each(&display_proc)
remove = gets.chomp
list.delete(remove)

opening_options

when “clear”
puts “Are you sure you want to delete every item from your list?”
puts “–YES/NO”
clear = gets.chomp.downcase
case clear
when “yes” || “y”
list.delete_if {true}
opening_options
when “no” || “n”
opening_options
else “ERROR! Unknown command!”
end

when “display”
list.each(&display_proc)

opening_options

when “exit”
system(‘quit’)
else “ERROR! Unknown command!”
end

On Thu, Nov 7, 2013 at 6:07 PM, Greg H. [email protected] wrote:

list = Array.new(0)
puts “–DISPLAY”
puts “–EXIT”

@options = gets.chomp.downcase
end

You need a loop starting here and …

opening_options

case @options
when “add”
puts “What item would you like to add?”
add = gets.chomp
list << add unless list.include?(add)

This line should go away, similarly as all other invocations inside the
case:

when “clear”
end

when “display”
list.each(&display_proc)

opening_options

when “exit”
system(‘quit’)

This won’t work. You want to invoke “exit” instead of “system”.

else “ERROR! Unknown command!”
end

… ending here.

Kind regards

robert

program just doesn’t wanna do that. :smiley:
puts “–ADD”
opening_options

puts “–YES/NO”
clear = gets.chomp.downcase
case clear
when “yes” || “y”

when “yes”, “y”

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs