class MiniGraph::DSL::SearchContext

Constants

ALGORITHM_IMPL

Public Class Methods

evaluate(graph, start_at, algorithm:) click to toggle source
# File lib/mini_graph/dsl/search_context.rb, line 13
def self.evaluate(graph, start_at, algorithm:)
  algorithm_impl = ALGORITHM_IMPL[algorithm]

  unless algorithm_impl
    raise MiniGraph::Core::Error::InvalidSearchAlgorithmError,
          "An unknown algorithm was provided to SearchContext: #{algorithm}"
  end

  vertex_index  = graph.vertices.map.with_index { |v, i| [v, i] }.to_h
  start_index   = start_at.nil? ? 0 : vertex_index[start_at]

  algorithm_impl.new(graph, start_index)
end