Imported File#ftype spec from rubyspecs.
[rbx.git] / lib / rbyaml / stream.rb
blobd77143a1917bb3e4e11f999788db689991ceb2c0
1 module RbYAML
2   #
3   # RbYAML::Stream -- for emitting many documents
4   #
5   class Stream
6     include Enumerable
8     attr_accessor :documents, :options
9     def initialize(opts = {})
10       @options = opts
11       @documents = []
12     end
13     
14     def [](i)
15       @documents[ i ]
16     end
17     
18     def add(doc)
19       @documents << doc
20     end
22     def edit(doc_num,doc)
23       @documents[ doc_num ] = doc
24     end
26     def each(&block)
27       @documents.each(&block)
28     end
29     
30     def emit
31 # TODO: implement
33       opts = @options.dup
34       opts[:UseHeader] = true if @documents.length > 1
35       ct = 0
36       out = Emitter.new( opts )
37       @documents.each { |v|
38         if ct > 0
39           out << "\n--- " 
40         end
41         v.to_yaml( :Emitter => out )
42         ct += 1
43       }
44       out.end_object
45     end
46   end
47   
48 end