Sha256: 5de847d3bca25a8f79c76f55da6930cc5d5aed6b05d87f1654c7b43e11daf2b6
Contents?: true
Size: 1.7 KB
Versions: 3
Compression:
Stored size: 1.7 KB
Contents
require 'model' class HashOfArrays < Hash def initialize(hash = {}) hash.each do |key, array| self[key] = hash[key].clone end end def clone self.class.new(self) end def subtract(hash) result = self.clone hash.each do |key, array| next if result[key].nil? array.each do |el| result[key].delete(el) end result.delete(key) if result[key].empty? end result end def add(key, *values) self[key] = [] if self[key].nil? self[key].concat(values) end def self.join(*hashes) result = self.new result.join(*hashes) end def join(*hashes) hashes.each do |hash| hash.each do |key, array| self.add(key, *array) end end self end def sort_arrays! self.each do |key, array| array.sort! end end end class IdHash < HashOfArrays def add(key, *values) super(key, *values) self[key].uniq! self end def remove_entries_from_db(as_first: [], as_last: []) exceptionals = as_first + as_last remove_from_exceptional(as_first) self.each do |name, ids| next if exceptionals.include?(name) remove_entries_from_array(name, ids) end remove_from_exceptional(as_last) end def with_table_symbols result = HashOfArrays.new self.each do |name, ids| symbol = Model.get_model(name).table_name.to_sym result[symbol] = ids end result end private def remove_from_exceptional(array) array.each do |name| ids = self[name] remove_entries_from_array(name, ids) end end def remove_entries_from_array(model_name, ids) model = Model.get_model(model_name) model.delete(ids) if model.present? end end
Version data entries
3 entries across 3 versions & 2 rubygems
Version | Path |
---|---|
travis-backup-for-v3-0.1.1 | lib/id_hash.rb |
travis-backup-for-v3-0.1.0 | lib/id_hash.rb |
travis-backup-0.3.0 | lib/id_hash.rb |