class RPath::Expression

An RPath expression, given a graph, produces a value: a vertex, a vertex array, an attribute value, or a vertex’s content. @abstract

Public Instance Methods

eval(graph, adapter = nil) click to toggle source

Evaluates the expression on a graph @param [Object] graph @param [RPath::Adapter, Symbol, nil] adapter

An {Adapter} instance, the id symbol given when the adapter was
registered with {RPath.use}, or +nil+ if the adapter should be
inferred.

@return [Object] @raise [RuntimeError]

The adapter can't be determined

@raise [ArgumentError]

+adapter+ is not an {Adapter}, Symbol, or nil

@see RPath @see RPath.use

# File lib/rpath/expressions.rb, line 22
def eval(graph, adapter = nil)
  adapter = case adapter
  when RPath::Adapter
    adapter
  when Symbol
    Registry.find adapter
  when nil
    Registry.infer graph
  else
    raise ArgumentError, "Adapter must be an RPath::Adapter, Symbol, or nil"
  end

  unless adapter
    raise "Can't determine adapter"
  end

  do_eval graph, adapter
end

Private Instance Methods

do_eval(graph, adapter) click to toggle source
# File lib/rpath/expressions.rb, line 43
def do_eval(graph, adapter)
  raise NotImplementedError
end