Ruby 1.9.2 リファレンスマニュアル > ライブラリ一覧 > yamlライブラリ > YAML::Streamクラス
class YAML::Stream
クラスの継承リスト: YAML::Stream < Object < Kernel < BasicObject
Abstract
YAMLドキュメントを複数保持することができるストリームクラスです。
参考
* ((<Rubyist Magazine|URL:http://jp.rubyist.net/magazine/>))
- ((<プログラマーのための YAML 入門 (中級編)|URL:http://jp.rubyist.net/magazine/?0010-YAML>))
特異メソッド
new(opts = {})
-
ストリームを返します。ストリームはYAMLドキュメントを複数保持することができます。
インスタンスメソッド
self[i]
-
i番目のドキュメントを参照します。
- [PARAM] 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)
-
オブジェクトをドキュメントに追加します。
- [PARAM] doc:
- 適切なオブジェクトを指定します。
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
-
現在のドキュメントを配列で返します。
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
edit(doc_num, doc)
-
doc_num番目のドキュメントをdocに変更します。 もし、doc_numが現在のドキュメント数より大きい場合は間にはnilが挿入されます。
- [PARAM] doc_num:
- 変更されるドキュメントの番号
- [PARAM] doc:
- 適切なオブジェクト
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にYAML形式で書き込みます。 io がnilの場合は文字列を返します。
- [PARAM] io:
- 書き込み先のIOオブジェクト
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