[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Trapping errors, a simple example

John Maclean

1/5/2006 4:15:00 PM

Hey Chaps,

Here's a really simple menu with only 4 options. I'd like to be able do some simple error trapping... How's it done?

#!/usr/bin/ruby
#Wed Jan 4 06:17:22 GMT 2006
class TopMenu
def welcome
puts "Welcome to de-blah-de-blah-de-blah"
puts "~~~~~~~ ~~ ~~ ~~~~ ~~ ~~~~ ~~ ~~~~~"
end

def options
# we will use this data to create a class called Option
# each option will have a new menu
# and will be a child class of the main one
print "------------------------------------\nmenu - Which stage are you at?\n------------------------------------\n0:- Before site work\n1:- During site work\n2:- After site work\n3:- Other stuff\nq:- quit!\n"
end

# grab the input
def topchoice
print "enter your choice (0,1,2,q) : "
p = $stdin.gets # TODO:- check it's validity # TODO:- is the choice a number in the correct range? # TODO:- does he wanna quit?
print "you have chosen #{p}"
if p == "0"
print "you have chosen #{p}"
else
if p == "q"
print "you have chosen #{p}"
end
end
end




# create a new instance
top = TopMenu.new
top.welcome
top.options
top.topchoice


--
John Maclean
MSc (DIC)
07739 171 531



2 Answers

Robert Klemme

1/5/2006 4:33:00 PM

0

John Maclean wrote:
> Hey Chaps,
>
> Here's a really simple menu with only 4 options. I'd like to be able
> do some simple error trapping... How's it done?
>
> #!/usr/bin/ruby
> #Wed Jan 4 06:17:22 GMT 2006
> class TopMenu
> def welcome
> puts "Welcome to de-blah-de-blah-de-blah"
> puts "~~~~~~~ ~~ ~~ ~~~~ ~~ ~~~~ ~~ ~~~~~"
> end
>
> def options
> # we will use this data to create a class called Option
> # each option will have a new menu
> # and will be a child class of the main one
> print "------------------------------------\nmenu - Which stage
> are you at?\n------------------------------------\n0:- Before site
> work\n1:- During site work\n2:- After site work\n3:- Other stuff\nq:-
> quit!\n" end
>
> # grab the input
> def topchoice
> print "enter your choice (0,1,2,q) : "
> p = $stdin.gets # TODO:- check it's validity # TODO:- is the

p.chomp!

if /\a[012q]\Z/
# ok
case p
when 0
when 1
....
end
else
# error
end

HTH

robert

> choice a number in the correct range? # TODO:- does he wanna
> quit? print "you have chosen #{p}" if p == "0"
> print "you have chosen #{p}"
> else
> if p == "q"
> print "you have chosen #{p}"
> end
> end
> end
>
>
>
>
> # create a new instance
> top = TopMenu.new
> top.welcome
> top.options
> top.topchoice

James Gray

1/5/2006 4:43:00 PM

0

On Jan 5, 2006, at 10:37 AM, Robert Klemme wrote:

> John Maclean wrote:
>> Hey Chaps,
>>
>> Here's a really simple menu with only 4 options. I'd like to be able
>> do some simple error trapping... How's it done?
>>
>> #!/usr/bin/ruby
>> #Wed Jan 4 06:17:22 GMT 2006
>> class TopMenu
>> def welcome
>> puts "Welcome to de-blah-de-blah-de-blah"
>> puts "~~~~~~~ ~~ ~~ ~~~~ ~~ ~~~~ ~~ ~~~~~"
>> end
>>
>> def options
>> # we will use this data to create a class called Option
>> # each option will have a new menu
>> # and will be a child class of the main one
>> print "------------------------------------\nmenu - Which stage
>> are you at?\n------------------------------------\n0:- Before site
>> work\n1:- During site work\n2:- After site work\n3:- Other stuff\nq:-
>> quit!\n" end
>>
>> # grab the input
>> def topchoice
>> print "enter your choice (0,1,2,q) : "
>> p = $stdin.gets # TODO:- check it's validity # TODO:- is the
>
> p.chomp!
>
> if /\a[012q]\Z/
> # ok
> case p
> when 0
> when 1
> ....
> end
> else
> # error
> end

You might also want to take a look at HighLine[1], which can make
this kind of user interaction easier.

1: http://rubyforge.org/projects...

James Edward Gray II