summaryrefslogtreecommitdiff
path: root/lib/yaml/stream.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/yaml/stream.rb')
-rw-r--r--lib/yaml/stream.rb44
1 files changed, 44 insertions, 0 deletions
diff --git a/lib/yaml/stream.rb b/lib/yaml/stream.rb
new file mode 100644
index 0000000000..3b6919b5dd
--- /dev/null
+++ b/lib/yaml/stream.rb
@@ -0,0 +1,44 @@
+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