mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
45 lines
754 B
Ruby
45 lines
754 B
Ruby
|
module YAML
|
||
|
|
||
|
#
|
||
|
# YAML::Stream -- for emitting many documents
|
||
|
#
|
||
|
class Stream
|
||
|
|
||
|
attr_accessor :documents, :options
|
||
|
|
||
|
def initialize( opts = {} )
|
||
|
@options = opts
|
||
|
@documents = []
|
||
|
end
|
||
|
|
||
|
def []( i )
|
||
|
@documents[ i ]
|
||
|
end
|
||
|
|
||
|
def add( doc )
|
||
|
@documents << doc
|
||
|
end
|
||
|
|
||
|
def edit( doc_num, doc )
|
||
|
@documents[ doc_num ] = doc
|
||
|
end
|
||
|
|
||
|
def emit
|
||
|
opts = @options.dup
|
||
|
opts[:UseHeader] = true if @documents.length > 1
|
||
|
ct = 0
|
||
|
out = Emitter.new( opts )
|
||
|
@documents.each { |v|
|
||
|
if ct > 0
|
||
|
out << "\n--- "
|
||
|
end
|
||
|
v.to_yaml( :Emitter => out )
|
||
|
ct += 1
|
||
|
}
|
||
|
out.end_object
|
||
|
end
|
||
|
|
||
|
end
|
||
|
|
||
|
end
|