@@ -20,19 +20,30 @@ def to_graph(builder, parent_id: nil, value: nil)
2020
2121 def build_steps_graph ( builder , parent_id , value )
2222 sink_nodes = [ ]
23+ extra_parents = [ ]
2324
2425 steps . each do |step |
2526 sink_nodes = step . to_graph ( builder , parent_id : parent_id , value : value )
26- value = nil # We don't want to pass the value to subsequent steps
27- parent_id = step . node_id
27+ extra_parents . each { |ep | builder . add_edge ( ep , step . node_id ) }
2828
29- builder . add_node_to_subgraph ( node_id , step . node_id )
29+ value = nil
30+ parent_id , extra_parents = process_sink_nodes ( sink_nodes , step )
3031
31- sink_nodes . each { | sink_node | builder . add_node_to_subgraph ( node_id , sink_node ) }
32+ add_to_subgraph ( builder , step , sink_nodes )
3233 end
3334
3435 [ parent_id , value , sink_nodes ]
3536 end
37+
38+ def process_sink_nodes ( sink_nodes , step )
39+ unique_sinks = sink_nodes . uniq
40+ [ unique_sinks . first || step . node_id , unique_sinks . drop ( 1 ) ]
41+ end
42+
43+ def add_to_subgraph ( builder , step , sink_nodes )
44+ builder . add_node_to_subgraph ( node_id , step . node_id )
45+ sink_nodes . each { |sink_node | builder . add_node_to_subgraph ( node_id , sink_node ) }
46+ end
3647 end
3748 end
3849 end
0 commit comments