Project

General

Profile

Bug #10781

Updated by nobu (Nobuyoshi Nakada) over 10 years ago

I'm making a little program that has a shell like command prompt. Something like: 

 ~~~ 
 $ cmd 
 Cmd out 
 $ more 
 More out 
 $ 
 ~~~ 

 I tried the following code, but the second prompt does not get flushed to my terminal after entering an initial command: 

 ~~~ruby ~~~ 
 begin 
   $stdout.write("$ ") 
   $stdout.flush 
 
   $stdout.puts($stdin.gets.inspect) 
 end until $stdin.closed? || $stdin.eof? 
 ~~~ 

 My output looks like: 

 ~~~ 
 $ input 
 "input\n" 
 more 
 $ "more\n" 
 ~~~ 

 But if I write my code like the following, my prompt works but I can't wrap my prompter in a method: 

 ~~~ruby ~~~ 
   $stdout.print('$ ') 
   $stdout.flush 
 
   begin 
     $stdout.puts($stdin.gets.inspect) 
     $stdout.print('$ ') 
     $stdout.flush 
   end until $stdin.closed? || $stdin.eof? 
 end 
 ~~~ 

 What exactly is the problem here? I've tried a 1.8 and 1.9.3p547.

Back