lib/dyna/utils.rb in dyna-0.1.9 vs lib/dyna/utils.rb in dyna-0.2.0

- old
+ new

@@ -1,7 +1,38 @@ module Dyna class Utils class << self + def normalize_hash(hash) + hash.dup.each do |k, v| + if v.kind_of?(Array) + if v.first.kind_of?(Hash) + hash[k] = v.map { |o| normalize_hash(o) } + elsif v.first.respond_to?(:to_h) + hash[k] = v.map { |o| normalize_hash(o.to_h) } + else + v.sort! + end + elsif v.respond_to?(:to_h) + hash[k] = normalize_hash(v.to_h) + end + end + sort_keys(hash) + end + + def sort_keys(hash) + hash = Hash[hash.sort] + hash.each do |k, v| + if v.kind_of?(Array) + if v.first.kind_of?(Hash) + hash[k] = v.map { |h| sort_keys(h) } + end + elsif v.kind_of?(Hash) + hash[k] = sort_keys(v) + end + end + hash + end + def diff(obj1, obj2, options = {}) diffy = Diffy::Diff.new( obj1.pretty_inspect, obj2.pretty_inspect, :diff => '-u'