Передача .Net Stream в IronRuby?

Я использую IronRuby для анализа файлов Yaml, а затем использую проанализированный документ на С#. Это отлично работает для создания движка (Ruby.CreateEngine()) и выполнения YAML::load(File.open('myFile.yaml')).

Но это работает хорошо, потому что я могу жестко закодировать строку для имени файла, когда я выполняю несколько строк кода ruby.

Теперь я хочу понять, как передать поток из .Net, чтобы парсер Yaml загрузил его. Как это сделать с помощью скриптового движка?


person Brian Genisio    schedule 25.02.2010    source источник


Ответы (1)


Вы можете установить переменную с помощью ScriptScope, а затем использовать ее из кода Ruby. Например:

ScriptEngine eng = Ruby.CreateEngine();
ScriptScope scope = eng.CreateScope();
scope.SetVariable("my_stream",stream);
eng.Execute("self.my_stream.read() # or whatever...", scope);
person Shay Friedman    schedule 25.02.2010
comment
Но создайте StreamReader и передайте StreamReader вместо потока. Затем вы можете сделать это: my_yaml = YAML.load(self.my_stream_reader.ReadToEnd) - person Kevin Radcliffe; 25.02.2010