From: Igor Pirnovar Date: 2009-02-20T09:03:41+09:00 Subject: Re: ASCII Menu in Ruby, is it possible? If you are planning to do some data entry checking on Linux platforms you may need to set the STDOUT.sync = true. I am including a simple program to show you the difference. Indeed on MS Windows you will not experience any difference if you comment out "STDOUT.sync = true"; on Linux if buffering is turned on you will! > STDOUT.sync = true #!/usr/bin/env ruby STDOUT.sync = true # (cross-platform compatibility issue) loop do print "\n\n\tPLEASE SELECT:\n\n" print "\t\t(1) ..... enter one number\n" print "\t\t(2) ..... enter two numbers " print "(no seoarators like commas, ...)\n" print "\t\t(Q) ..... Quit\n\n" print "\tPlease select one of the above: " answer = gets printf "You've selected %s\n", answer case answer.chomp when "1" num = nil while num !~ /\d+.*[^\d]*/ print "Please enter a single number: " num = gets num.chomp! # note exclamation mark (!) if num.split(/\s+/).size != 1|| num !~ /\d+/ puts "You should have entered a single number not [#{num}]" print "Press to continue " any = gets else puts "Thank you for [#{num}]." end end when "2" num = nil while num !~ /\d+[\s,]+\d+/ print "Please enter two numbers: " num = gets num.chomp! # note exclamation mark (!) if num.split(/\s+/).size != 2 || num !~ /\d+\s+\d+/ puts "You must enter two numbers number, not [#{num}]" print "Press to continue " any = gets else puts "Thank you for [#{num}]." end end when /q|Q/ exit else print "Illegal selection; Please try again! " print "Please enter a single number:\n" print "Press to continue " any = gets end end -- Posted via http://www.ruby-forum.com/.