From 8b1ae37254535ea1d8cacbae95d5870ed64bea3d Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Tue, 22 Dec 2009 16:42:50 -0800 Subject: using recursive hash for cache misses --- lib/psych/visitors/yaml_tree.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/psych/visitors/yaml_tree.rb b/lib/psych/visitors/yaml_tree.rb index 3604ba4..e317238 100644 --- a/lib/psych/visitors/yaml_tree.rb +++ b/lib/psych/visitors/yaml_tree.rb @@ -11,9 +11,9 @@ module Psych @st = {} @dispatch_cache = Hash.new do |h,klass| - method = klass.ancestors.map { |ancestor| - "visit_#{(ancestor.name || '').split('::').join('_')}" - }.find { |sig| respond_to? sig } + method = "visit_#{(klass.name || '').split('::').join('_')}" + + method = respond_to?(method) ? method : h[klass.superclass] raise(TypeError, "Can't dump #{target.class}") unless method -- cgit v1.2.3