From 406faa5763a1040927e6b3e1f9dd9ff0df2952ea Mon Sep 17 00:00:00 2001 From: toothrot Date: Fri, 2 Jul 2010 16:26:27 -0500 Subject: [PATCH] slightly better. --- json-hash.rb | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/json-hash.rb b/json-hash.rb index f8ef93c..47ec8d0 100644 --- a/json-hash.rb +++ b/json-hash.rb @@ -2,8 +2,7 @@ class Hash def dottable! class << self def method_missing(sym, *args, &block) - result = fetch(sym.to_s) { fetch(sym) } - if result.respond_to?(:dottable!) then result.dottable! else result end + convert_result(fetch(sym) { fetch(sym.to_s) }) rescue IndexError super end @@ -11,7 +10,11 @@ def method_missing(sym, *args, &block) alias_method :regular_reader, :[] unless method_defined?(:regular_reader) def [](key) - result = regular_reader(key) + convert_result(regular_reader(key)) + end + + private + def convert_result(result) if result.respond_to?(:dottable!) then result.dottable! else result end end end