Ruby 1.9.3 リファレンスマニュアル > ライブラリ一覧 > syck/streamライブラリ > Syck::Streamクラス
クラスの継承リスト: Syck::Stream < Object < Kernel < BasicObject
YAML ドキュメントを複数保持することができるストリームクラスです。
Rubyist Magazine: http://magazine.rubyist.net/
new(opts = {}) -> Syck::Stream
[permalink][rdoc]ストリームを返します。ストリームはYAMLドキュメントを複数保持することができます。
[SEE_ALSO] Syck::Stream#options, Syck::Stream#options=
self[i] -> object
[permalink][rdoc]i番目のドキュメントを参照します。
require 'yaml' class Dog attr_accessor :name def initialize(name) @name = name end end ys = YAML::Stream.new begin ys[0] = Dog.new("kuro") rescue p $! #=> #<NoMethodError: undefined method `[]=' for #<YAML::Stream:0x2b07d48 @documents=[], @options={}>> end ys.add Dog.new("pochi") p ys[0] #=> #<Dog:0x2b07b04 @name="pochi">
add(doc) -> ()
[permalink][rdoc]オブジェクトをドキュメントに追加します。
require 'yaml' class Dog attr_accessor :name def initialize(name) @name = name end end str1=<<EOT --- !ruby/Dog name: pochi EOT ys = YAML.load_stream(str1) p ys.documents #=> [#<YAML::DomainType:0x2b07af0 @value={"name"=>"pochi"}, @type_id="Dog", @domain="ruby.yaml.org,2002">] ys.add(Dog.new("tama")) p ys.documents #=> [#<YAML::DomainType:0x2b07af0 @value={"name"=>"pochi"}, @type_id="Dog", @domain="ruby.yaml.org,2002">, #<Dog:0x2b079b0 @name="tama">]
documents -> Array
[permalink][rdoc]自身のドキュメントを配列で返します。
require 'yaml' str1=<<EOT --- !ruby/Dog name: pochi --- :age: 17 :color: white EOT ys = YAML.load_stream(str1) p ys.documents.pop #=> {:age=>17, :color=>"white"} p ys.documents.pop #=> #<YAML::DomainType:0x2b07e24 @type_id="Dog", @domain="ruby.yaml.org,2002", @value={"name"=>"pochi"}> p ys.documents.pop #=> nil
documents=(val)
[permalink][rdoc]現在のドキュメントを配列で設定します。
edit(doc_num, doc) -> ()
[permalink][rdoc]doc_num番目のドキュメントをdocに変更します。 もし、doc_numが現在のドキュメント数より大きい場合は間にはnilが挿入されます。
require 'yaml' class Dog attr_accessor :name def initialize(name) @name = name end end ys = YAML::Stream.new ys.add(Dog.new("tama")) ys.edit(1, Dog.new("pochi")) ys.edit(5, Dog.new("jack")) p ys.documents #=> [#<Dog:0x2b07c44 @name="tama">, #<Dog:0x2b07c1c @name="pochi">, nil, nil, nil, #<Dog:0x2b07bf4 @name="jack">]
emit(io = nil) -> IO | String
[permalink][rdoc]ストリームに含まれる各ドキュメントを引数 io に YAML 形式で書き込みます。 io が nil の場合は文字列を返します。
require 'yaml' class Dog attr_accessor :name def initialize(name) @name = name end end ys = YAML::Stream.new ys.add(Dog.new("pochi")) ys.edit(1, { :age => 17, :color => "white"}) ys.edit(2, [ "Chiba", "Saitama"]) ys.emit.split(/\n/).each {|l| puts l } #結果 --- !ruby/object:Dog name: pochi --- :age: 17 :color: white --- - Chiba - Saitama
options -> {Symbol => object}
[permalink][rdoc]オプションの一覧を返します。
options=(val)
[permalink][rdoc]オプションの一覧を設定します。