Class: Hash
- Inherits:
-
Object
- Object
- Hash
- Defined in:
- lib/xml_spec.rb
Instance Method Summary collapse
Instance Method Details
#diff(other) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/xml_spec.rb', line 25 def diff(other) (self.keys + other.keys).uniq.inject({}) do |memo, key| unless self[key] == other[key] if self[key].kind_of?(Hash) && other[key].kind_of?(Hash) memo[key] = self[key].diff(other[key]) else memo[key] = [self[key], other[key]] end end memo end end |
#interpret_diff(memos = [], path = []) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/xml_spec.rb', line 38 def interpret_diff( memos=[], path=[] ) self.inject(memos) do |memo, key_value| k, v = key_value.first, key_value.last path << k #puts '', "memo: #{memo.inspect}", "key: #{k}", "value: #{v}" #puts "path: #{path.inspect}" if v.kind_of?( Hash ) #debugger v.interpret_diff( memos, path ) elsif v.kind_of?(Array) #debugger memo << "#{path.join( '/' )}: #{v.map { |val| val.nil? ? 'nil' : (val.respond_to?( :empty? ) && val.empty? ? "''" : "'#{val}'") }.join( ' is not ' )}" end end memos end |