module Journeyviz::Graphable::Externals
Private Instance Methods
graph_external_block(block, chain, sufix)
click to toggle source
# File lib/journeyviz/graphable/externals.rb, line 61 def graph_external_block(block, chain, sufix) definition = graph_external_chain(chain, sufix) return definition if block.is_a?(Journeyviz::Journey) <<~SUBGRAPH subgraph #{sufix}_#{graph_id(block)}[#{block.name}] #{definition} end SUBGRAPH end
graph_external_chain(nodes, sufix)
click to toggle source
# File lib/journeyviz/graphable/externals.rb, line 33 def graph_external_chain(nodes, sufix) nodes .group_by(&:first) .flat_map { |parent, chain| graph_external_chain_node(parent, chain, sufix) } .join("\n") end
graph_external_chain_node(parent, chain, sufix)
click to toggle source
# File lib/journeyviz/graphable/externals.rb, line 40 def graph_external_chain_node(parent, chain, sufix) chain_without_parent = chain.map { |subchain| subchain[1..-1] } if parent.is_a?(Journeyviz::Screen) [graph_external_screen(parent, sufix)] + graph_external_transitions(parent) else graph_external_block(parent, chain_without_parent, sufix) end end
graph_external_screen(screen, sufix)
click to toggle source
# File lib/journeyviz/graphable/externals.rb, line 50 def graph_external_screen(screen, sufix) "#{sufix}_#{graph_id(screen)}[#{screen.name}]:::external_screen" end
graph_external_transitions(screen)
click to toggle source
# File lib/journeyviz/graphable/externals.rb, line 54 def graph_external_transitions(screen) screen .actions .select { |action| screens.include?(action.transition) } .map { |action| "#{graph_id(action)}(#{action.name}):::transition" } end
graph_inputs()
click to toggle source
# File lib/journeyviz/graphable/externals.rb, line 8 def graph_inputs return '' unless defined?(root_scope) inputs = self.inputs.map { |screen| screen.full_scope + [screen] } return '' if inputs.empty? <<~INPUTS subgraph inputs #{graph_external_chain(inputs, 'input')} end INPUTS end
graph_outputs()
click to toggle source
# File lib/journeyviz/graphable/externals.rb, line 22 def graph_outputs outputs = self.outputs.map { |screen| screen.full_scope + [screen] } return '' if outputs.empty? <<~OUTPUTS subgraph outputs #{graph_external_chain(outputs, 'output')} end OUTPUTS end