Module: Graphomaton::ExporterCapabilities

Defined in:
lib/graphomaton/exporter_registry.rb

Constant Summary collapse

FEATURE_DETECTORS =
{
  state_style: ->(graph) { graph.state_records.any? { |_, state| state.style } },
  transition_style: ->(graph) { graph.transition_records.any? { |transition| transition.style } },
  url: lambda { |graph|
    graph.state_records.any? { |_, state| (state., :url, :href) } ||
      graph.transition_records.any? { |transition| (transition., :url, :href) }
  },
  tooltip: lambda { |graph|
    graph.state_records.any? { |_, state| (state., :tooltip, :description) } ||
      graph.transition_records.any? { |transition| (transition., :tooltip, :description) }
  },
  group: ->(graph) { graph.state_records.any? { |_, state| (state., :group, :cluster) } },
  parent: ->(graph) { graph.state_records.any? { |_, state| (state., :parent) } },
  pseudostate: lambda { |graph|
    graph.state_records.any? do |_, state|
      (state.kind && state.kind != :normal) || (state., :kind, :type)
    end
  },
  bundle: ->(graph) { graph.transition_records.any? { |transition| (transition., :bundle) } },
  line_style: ->(graph) { graph.transition_records.any?(&:line_style) }
}.freeze

Class Method Summary collapse

Class Method Details

.losses_for(graph, capabilities) ⇒ Object



94
95
96
97
98
# File 'lib/graphomaton/exporter_registry.rb', line 94

def self.losses_for(graph, capabilities)
  FEATURE_DETECTORS.filter_map do |feature, detector|
    feature if detector.call(graph) && !capabilities.include?(feature)
  end
end