summaryrefslogtreecommitdiff
path: root/ext/psych/lib/psych/visitors/yaml_tree.rb
diff options
context:
space:
mode:
authortenderlove <tenderlove@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-07-07 23:18:27 +0000
committertenderlove <tenderlove@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-07-07 23:18:27 +0000
commit646b6995362aff14abfc08db24d091d01f5879d0 (patch)
tree43f1a48002803da9017b4de247c6fb7d23238a59 /ext/psych/lib/psych/visitors/yaml_tree.rb
parent3a185ede69ac5845aebbde38dc8e6fbe4f64308a (diff)
* ext/psych/lib/psych/visitors/yaml_tree.rb (push): adding version
and header emit options. * test/psych/test_psych.rb: corresponding test. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28574 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/psych/lib/psych/visitors/yaml_tree.rb')
-rw-r--r--ext/psych/lib/psych/visitors/yaml_tree.rb15
1 files changed, 14 insertions, 1 deletions
diff --git a/ext/psych/lib/psych/visitors/yaml_tree.rb b/ext/psych/lib/psych/visitors/yaml_tree.rb
index 5f757e9e1b..8a12086458 100644
--- a/ext/psych/lib/psych/visitors/yaml_tree.rb
+++ b/ext/psych/lib/psych/visitors/yaml_tree.rb
@@ -13,6 +13,7 @@ module Psych
@emitter = emitter
@st = {}
@ss = ScalarScanner.new
+ @options = options
@dispatch_cache = Hash.new do |h,klass|
method = "visit_#{(klass.name || '').split('::').join('_')}"
@@ -43,7 +44,19 @@ module Psych
def push object
start unless started?
- @emitter.start_document [], [], false
+ version = []
+ version = [1,1] if @options[:header]
+
+ case @options[:version]
+ when Array
+ version = @options[:version]
+ when String
+ version = @options[:version].split('.').map { |x| x.to_i }
+ else
+ version = [1,1]
+ end if @options[:version]
+
+ @emitter.start_document version, [], false
accept object
@emitter.end_document
end