On Thu, Nov 7, 2013 at 6:07 PM, Greg Hajdu <lists / ruby-forum.com> wrote:
> 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. :D
> 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

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:

>     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')

This won't work. You want to invoke "exit" instead of "system".

>   else "ERROR! Unknown command!"
> end

... ending here.

Kind regards

robert


-- 
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/