summaryrefslogtreecommitdiff
path: root/lib/yaml/stream.rb
diff options
context:
space:
mode:
authorwhy <why@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-05-09 21:25:50 +0000
committerwhy <why@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-05-09 21:25:50 +0000
commit55f4dc4c9a5345c28d0da750d1ee00fbb0870885 (patch)
tree904359659b75882365348decb2ca0789ca1ac803 /lib/yaml/stream.rb
parent605adb86e2c2889c13e07cadf328f8032eebae7c (diff)
Initial checkin of YAML substances.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3772 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
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