Sha256: 68d4328c0a6b7258a673d274a3a78040277203066885d7ec62830b1ee059a019
Contents?: true
Size: 1.1 KB
Versions: 1
Compression:
Stored size: 1.1 KB
Contents
require "d2e/version" class D2E def initialize(options) @key = options[:key] end def diff(prev, curr) events = [] prev_ids = prev.map {|item| item[@key] } curr_ids = curr.map {|item| item[@key] } deleted = prev_ids - curr_ids created = curr_ids - prev_ids updated = prev_ids & curr_ids created.each do |id| item = curr.find {|item| item[@key] == id } events << {'type' => 'create', 'item' => item} end deleted.each do |id| item = prev.find {|item| item[@key] == id } events << {'type' => 'delete', 'item' => item} end updated.each do |id| diff = {} prev_item = prev.find {|item| item[@key] == id } curr_item = curr.find {|item| item[@key] == id } keys = prev_item.keys | curr_item.keys keys.each do |key| prev_value = prev_item[key] curr_value = curr_item[key] if prev_value != curr_value diff[key] = [prev_value, curr_value] end end if !diff.empty? events << {'type' => 'update', 'id' => id, 'diff' => diff} end end events end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
d2e-0.0.2 | lib/d2e.rb |