Sha256: 01314e4f2228d87c6fe1b58d4c1e947f199054490c2da1321ee4508ef19fc69e
Contents?: true
Size: 1.05 KB
Versions: 4
Compression:
Stored size: 1.05 KB
Contents
require 'pact_broker/models/group' =begin Splits all relationships up into groups of non-connecting relationships. =end module PactBroker module Functions class Groupify def self.call relationships recurse_groups([], relationships.dup).collect{ | group | Models::Group.new(group) } end def self.recurse_groups groups, relationship_pool if relationship_pool.empty? groups else first, *rest = *relationship_pool group = recurse first, rest recurse_groups(groups + [group], relationship_pool - group) end end def self.recurse relationship, relationship_pool connected_relationships = relationship_pool.select{ | candidate| candidate.connected?(relationship) } if connected_relationships.empty? [relationship] else ([relationship] + connected_relationships.map{| connected_relationship| recurse(connected_relationship, relationship_pool - connected_relationships)}.flatten).uniq end end end end end
Version data entries
4 entries across 4 versions & 1 rubygems