17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
# File 'lib/pact_broker/relationships/groupify.rb', line 17
def self.recurse_groups groups, relationship_pool
if relationship_pool.empty?
groups
else
first, *rest = relationship_pool
group = [first]
new_connections = true
while new_connections
new_connections = false
group = rest.inject(group) do |connected, candidate|
if connected.select { |relationship| relationship.connected?(candidate) }.any?
new_connections = true
connected + [candidate]
else
connected
end
end
rest = rest - group
group.uniq
end
recurse_groups(groups + [group], relationship_pool - group)
end
end
|