From b3fb872d9db31d752aeefdb62b7ea928b9cadc42 Mon Sep 17 00:00:00 2001 From: tenderlove Date: Mon, 22 Oct 2012 21:14:08 +0000 Subject: * ext/psych/lib/psych/visitors/to_ruby.rb: Handle nil tags specially to avoid slow method_missing calls. Thanks Kevin Menard! git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37289 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ext/psych/lib/psych/visitors/to_ruby.rb | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'ext/psych/lib') diff --git a/ext/psych/lib/psych/visitors/to_ruby.rb b/ext/psych/lib/psych/visitors/to_ruby.rb index 088301ac14..c6cf018888 100644 --- a/ext/psych/lib/psych/visitors/to_ruby.rb +++ b/ext/psych/lib/psych/visitors/to_ruby.rb @@ -118,6 +118,8 @@ module Psych end case o.tag + when nil + register_empty(o) when '!omap', 'tag:yaml.org,2002:omap' map = register(o, Psych::Omap.new) o.children.each { |a| @@ -130,9 +132,7 @@ module Psych o.children.each { |c| list.push accept c } list else - list = register(o, []) - o.children.each { |c| list.push accept c } - list + register_empty(o) end end @@ -252,6 +252,12 @@ module Psych object end + def register_empty object + list = register(object, []) + object.children.each { |c| list.push accept c } + list + end + def revive_hash hash, o @st[o.anchor] = hash if o.anchor -- cgit v1.2.3