Hello,

 

I am experimenting with script IO in preparation for hosting an IRB
session via an embedded SSH server and/or embedded HTTP server, but I'm
having trouble getting the script environment to use a custom stream for
standard input. I used the following code for setting up my IronRuby
environment:

 

  public Form1()

        {

            InitializeComponent();

 

            

 

            _stdIn = new MemoryStream();

            _inputWriter = new StreamWriter(_stdIn);

            txtStandardIn.KeyPress+=(s,e)=>

                                        {

 
_inputWriter.Write(e.KeyChar);

                                            _inputWriter.Flush();

                                            Debug.Write(e.KeyChar);

                                        };

 

            

            _stdOut = new FifoStream();

            _outputReader = new StreamReader(_stdOut);

            _stdOut.DataArrived += StdOutDataArrived;

 

            _scriptEngine = Ruby.CreateEngine();

            _globalScope = _scriptEngine.CreateScope();

            

            

            _scriptEngine.Runtime.IO.SetInput(_stdIn, Encoding.Default);

            _scriptEngine.Runtime.IO.SetOutput(_stdOut,
Encoding.Default);

        }

 

If I write "hello" + Environment.NewLine to the input stream and flush
the writer and then use the ScriptEngine e to execute a "x = gets" - x
is always nil. However, if I use the script engine to execute "puts
'hello'" my custom output stream is used and I see my output.

 

I feel like I am missing a key ingredient in my setup process - any help
would be appreciated. 

 

Thanks,

 

Nathan

 

_______________________________________________
Ironruby-core mailing list
Ironruby-core@rubyforge.org
http://rubyforge.org/mailman/listinfo/ironruby-core

Reply via email to