lib/sum_sum.rb in sum_sum-0.0.2 vs lib/sum_sum.rb in sum_sum-0.0.3

- old
+ new

@@ -42,6 +42,34 @@ end def inspect bottom? ? "#{count}" : "{#{name}:#{count} #{super.gsub(/^\{|\}$/, "")}}" end + + def dump + return count if bottom? + hash = {} + each{ |k, v| hash[k] = v.dump } + root? ? [all_args, hash] : hash + end + + def self.load(data) + new(*data[0]).tap do |sum_sum| + sum_sum.add_from_dump(data[1]) + end + end + + def add_from_dump(data, hash={}, level=0) + data.each do |key, value| + hash[all_args[level]] = key + value.is_a?(Hash) ? + add_from_dump(value, hash, level + 1) : + add(hash, value) + end + end + + private + + def all_args + [name] + args + end end