Class: Hash
- Inherits:
-
Object
- Object
- Hash
- Defined in:
- lib/hash/diff.rb
Overview
Copyright © 2017 Kenichi Kamiya
Constant Summary collapse
- Diff =
Data.define(:old, :new, :dirty) do def self.generate(older:, newer:) old_hash = older.to_hash new_hash = newer.to_hash old_pairs = old_hash.to_a new_pairs = new_hash.to_a dirty = ((old_pairs - new_pairs) | (new_pairs - old_pairs)).to_h new(old: old_hash, new: new_hash, dirty:) end # @return [Hash] def deleted dirty.except(*new.keys) end # @return [Hash] def appended dirty.except(*old.keys) end # @return [Hash] def value_updated dirty.except(*deleted.keys).except(*appended.keys) end # @return [Hash] def kept new.except(*dirty.keys) end end
Class Method Summary collapse
Class Method Details
.Diff(older, newer) ⇒ Hash::Diff
9 10 11 |
# File 'lib/hash/diff.rb', line 9 def self.Diff(older, newer) Diff.generate(older:, newer:) end |