入力されたオブジェクトから変換された YAML document を指定した IO に出力する機能を持つクラスです。
start で変換を開始し、push で変換する Ruby オブジェクトを渡し、最後に finish を呼ぶことで変換を完了します。
stream = Psych::Stream.new($stdout) stream.start stream.push({:foo => 'bar'}) stream.finish
YAML document は(バッファリングされずに)直接 $stdout に出力されます。
finish を確実に呼び出すためには Psych::Stream#start メソッドをブロック付きで呼び出すとよいでしょう。
stream = Psych::Stream.new($stdout) stream.start do |em| em.push(:foo => 'bar') end
基本的な仕組みは Psych::Visitors::YAMLTree と似ています。
new(io) -> Psych::Stream
[permalink][rdoc]新たな Stream オブジェクトを生成します。
io で YAML document の出力先を指定します。
finish -> ()
[permalink][rdoc]YAML document への変換を完了し、io への出力を完了します。
start(encoding = Psych::Nodes::Stream::UTF8) -> Psych::Stream
[permalink][rdoc]start(encoding = Psych::Nodes::Stream::UTF8) {|em| ... } -> Psych::Stream
Ruby オブジェクトを YAML document に変換するための準備をします。
変換された document は Psych::Stream.new で指定した出力先に出力されます。
finish を呼び出すことで出力が完了します(finish を呼び出さないと最後まで出力されない場合があります)。
ブロック付きで start を呼び出すと、変換準備を終えた Stream オブジェクト (self) がブロックに渡され、ブロックが呼び出された後に finish を呼び出します。これによって finish を確実に呼び出すことができます。