summaryrefslogtreecommitdiff
path: root/ruby_1_8_5/lib/yaml/stream.rb
diff options
context:
space:
mode:
Diffstat (limited to 'ruby_1_8_5/lib/yaml/stream.rb')
-rw-r--r--ruby_1_8_5/lib/yaml/stream.rb40
1 files changed, 40 insertions, 0 deletions
diff --git a/ruby_1_8_5/lib/yaml/stream.rb b/ruby_1_8_5/lib/yaml/stream.rb
new file mode 100644
index 0000000000..060fbc4200
--- /dev/null
+++ b/ruby_1_8_5/lib/yaml/stream.rb
@@ -0,0 +1,40 @@
+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( io = nil )
+ # opts = @options.dup
+ # opts[:UseHeader] = true if @documents.length > 1
+ out = YAML.emitter
+ out.reset( io || io2 = StringIO.new )
+ @documents.each { |v|
+ v.to_yaml( out )
+ }
+ io || ( io2.rewind; io2.read )
+ end
+
+ end
+
+end