module Journeyviz::NodeGroup

Public Instance Methods

block(name, &definition) click to toggle source
# File lib/journeyviz/node_group.rb, line 9
def block(name, &definition)
  block = Block.new(name, self)

  @blocks ||= []
  if @blocks.any? { |defined_block| block.name == defined_block.name }
    raise DuplicatedDefinition, "Duplicated block name: #{name}"
  end

  @blocks.push(block)
  definition.call(block)
  block
end
blocks(include_children: false) click to toggle source
# File lib/journeyviz/node_group.rb, line 22
def blocks(include_children: false)
  @blocks ||= []

  if include_children
    @blocks.flat_map { |block| [block] + block.blocks(include_children: true) }
  else
    @blocks
  end
end
find_screen(qualifier) click to toggle source
# File lib/journeyviz/node_group.rb, line 50
def find_screen(qualifier)
  screens.find { |screen| screen.full_qualifier == qualifier }
end
inputs() click to toggle source
# File lib/journeyviz/node_group.rb, line 54
def inputs
  options = defined?(root_scope) && root_scope ? root_scope.screens : []
  external_screens = options - screens
  self_screens = screens
  external_screens.select do |screen|
    screen.actions.any? do |action|
      self_screens.include?(action.transition)
    end
  end
end
outputs() click to toggle source
# File lib/journeyviz/node_group.rb, line 65
def outputs
  screens
    .flat_map(&:actions)
    .map(&:transition)
    .compact
    .reject { |screen| screens.include?(screen) }
end
screen(name) { |screen| ... } click to toggle source
# File lib/journeyviz/node_group.rb, line 32
def screen(name)
  @screens ||= []
  screen = Screen.new(name, self)

  if @screens.any? { |defined_screen| screen.name == defined_screen.name }
    raise DuplicatedDefinition, "Duplicated screen name: #{name}"
  end

  @screens.push(screen)
  yield screen if block_given?
  screen
end
screens() click to toggle source
# File lib/journeyviz/node_group.rb, line 45
def screens
  @screens ||= []
  @screens + blocks.flat_map(&:screens)
end