module Grably::Digest
Set of utilities to digest products and stat product set changes
Public Class Methods
build_diff(new_map, old_map)
click to toggle source
# File lib/grably/core/digest.rb, line 73 def build_diff(new_map, old_map) old_keys = old_map.keys.to_set new_keys = new_map.keys.to_set missing = old_keys - new_keys added = new_keys - old_keys updated = (old_keys & new_keys).reject do |product| old_map[product] == new_map[product] end [missing, added, updated] end
diff_digests(old_products, new_products)
click to toggle source
Given two lists of product digests find missing, changed, and added products @return [deleted, added, updated]
# File lib/grably/core/digest.rb, line 63 def diff_digests(old_products, new_products) # create maps of product sets old_map, new_map = [old_products, new_products].map do |products| return [] unless products Hash[*products.flat_map { |d| [d.product, d] }] end build_diff(new_map, old_map) end
differ?(old_products, new_products)
click to toggle source
Tells if two product digest lists are differ
# File lib/grably/core/digest.rb, line 88 def differ?(old_products, new_products) !diff_digests(old_products, new_products).flatten.empty? end
digest(*products)
click to toggle source
# File lib/grably/core/digest.rb, line 56 def digest(*products) products.map { |product| ProductDigest.of_product(product) } end