6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/grandprix/planner.rb', line 6
def plan(topology, elements_array)
elements = Grandprix::Elements.build elements_array
nested_dependencies = project_array(topology, "after")
alongside = project_array(topology, "alongside")
dependencies = flatten_edges nested_dependencies
full_dependencies = dependencies.flat_map do |from, to|
extended_from = alongside[from] + [from]
extended_to = alongside[ to] + [to ]
new_deps = extended_from.product extended_to
eliminate_self_loops compact_pairs(new_deps)
end
before_relation = invert full_dependencies
in_order = @graph.sort before_relation
full_elements = elements.alongside alongside
independent_elements = elements.except in_order
elements_in_order = full_elements.reorder in_order
all = independent_elements + elements_in_order
all.annotate project(topology, "annotation")
end
|