Class: PactBroker::Functions::Groupify
- Inherits:
-
Object
- Object
- PactBroker::Functions::Groupify
- Defined in:
- lib/pact_broker/functions/groupify.rb
Class Method Summary collapse
- .call(relationships) ⇒ Object
- .recurse(relationship, relationship_pool) ⇒ Object
- .recurse_groups(groups, relationship_pool) ⇒ Object
Class Method Details
.call(relationships) ⇒ Object
13 14 15 |
# File 'lib/pact_broker/functions/groupify.rb', line 13 def self.call relationships recurse_groups([], relationships.dup).collect{ | group | Models::Group.new(group) } end |
.recurse(relationship, relationship_pool) ⇒ Object
27 28 29 30 31 32 33 34 |
# File 'lib/pact_broker/functions/groupify.rb', line 27 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 |
.recurse_groups(groups, relationship_pool) ⇒ Object
17 18 19 20 21 22 23 24 25 |
# File 'lib/pact_broker/functions/groupify.rb', line 17 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 |