summaryrefslogtreecommitdiff
path: root/ext/psych/lib/psych/visitors/to_ruby.rb
diff options
context:
space:
mode:
authortenderlove <tenderlove@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-08-07 20:50:05 +0000
committertenderlove <tenderlove@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-08-07 20:50:05 +0000
commit6b3bac29fe8341385ad70b8c6145e8f355369339 (patch)
tree40d791ced37f952fa05ce87aed4d0c1c6e54b451 /ext/psych/lib/psych/visitors/to_ruby.rb
parent33d5c4848df9c000e80a28cc9ba1c5e63cfc631d (diff)
merge revision(s) r36583, r36458, r36414, r36103, r35690, r35681, r35658, r35657, r35655, r35492: [Backport #6815]
* ext/psych/lib/psych.rb: updated to released version. * ext/psych/psych.gemspec: ditto * ext/psych/emitter.c (initialize): allow a configuration object to be passed to the constructor so that mutation isn't required after instantiation. * ext/psych/lib/psych/handler.rb: add configuration object * ext/psych/lib/psych/visitors/emitter.rb: use configuration object if extra configuration is present. * ext/psych/lib/psych/visitors/to_ruby.rb: strings with YAML anchors are properly referenced. Patched by Joe Rafaniello via Github: https://github.com/tenderlove/psych/pull/69 * ext/psych/lib/psych/visitors/yaml_tree.rb: ditto * test/psych/test_alias_and_anchor.rb: test for change * ext/psych/lib/psych.rb: bumping psych to 1.3.3 * ext/psych/psych.gemspec: ditto * ext/psych/extconf.rb: Use an exception instaed of bare abort. * ext/psych/parser.c (transcode_string): fix encoding index names. Thanks markizko for reporting. * ext/psych/lib/psych/visitors/to_ruby.rb: fix a bug with string subclass dumping and loading. * test/psych/test_array.rb: pertinent tests * test/psych/test_string.rb: ditto * ext/psych/lib/psych/visitors/to_ruby.rb: convert omap tagged maps to Psych::Omap objects rather than hashes. [Bug #6425] * test/psych/test_omap.rb: pertinent test. * ext/psych/lib/psych/visitors/yaml_tree.rb: keep a reference to custom coders so that GC does not impact dumped yaml reference ids. * ext/psych/lib/psych/json/yaml_events.rb: implicit styles should not be changeable for JSON events. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@36654 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext/psych/lib/psych/visitors/to_ruby.rb')
-rw-r--r--ext/psych/lib/psych/visitors/to_ruby.rb11
1 files changed, 9 insertions, 2 deletions
diff --git a/ext/psych/lib/psych/visitors/to_ruby.rb b/ext/psych/lib/psych/visitors/to_ruby.rb
index 2e082f90b4..088301ac14 100644
--- a/ext/psych/lib/psych/visitors/to_ruby.rb
+++ b/ext/psych/lib/psych/visitors/to_ruby.rb
@@ -147,8 +147,8 @@ module Psych
string = members.delete 'str'
if klass
- string = klass.allocate
- string.replace string
+ string = klass.allocate.replace string
+ register(o, string)
end
init_with(string, members.map { |k,v| [k.to_s.sub(/^@/, ''),v] }, o)
@@ -222,6 +222,13 @@ module Psych
when /^!map:(.*)$/, /^!ruby\/hash:(.*)$/
revive_hash resolve_class($1).new, o
+ when '!omap', 'tag:yaml.org,2002:omap'
+ map = register(o, Psych::Omap.new)
+ o.children.each_slice(2) do |l,r|
+ map[accept(l)] = accept r
+ end
+ map
+
else
revive_hash({}, o)
end