class Axiom::Adapter::Arango::Visitor

Base class for relation specific visitors

Constants

REGISTRY

Public Class Methods

build(relation, context = nil) click to toggle source

Return visitor for relation and context

@param [Relation] relation @param [Visitor] context

@return [Visitor]

@api private

# File lib/axiom/adapter/arango/visitor.rb, line 47
def self.build(relation, context = nil)
  REGISTRY.fetch(relation.class).new(relation, context)
end
run(relation) click to toggle source

Return an AQL node from the relation

@param [Relation] relation

@return [AQL::Node]

@api private

# File lib/axiom/adapter/arango/visitor.rb, line 18
def self.run(relation)
  build(relation).root
end

Private Class Methods

handle(klass) click to toggle source

Register handler for the axiom relation

@param [Class] klass

@return [undefined]

@api private

# File lib/axiom/adapter/arango/visitor.rb, line 32
def self.handle(klass)
  REGISTRY[klass]=self
end

Protected Instance Methods

depth() click to toggle source

Return depth

@return [Integer]

@api private

# File lib/axiom/adapter/arango/visitor.rb, line 59
def depth
  context = self.context
  if context
    context.depth + 1
  else
    0
  end
end

Private Instance Methods

visit(relation, context = self) click to toggle source

Return an AQL node from visiting axiom a given relation

@param [Relation] relation @param [Visitor] context

@return [AQL::Node]

@api private

# File lib/axiom/adapter/arango/visitor.rb, line 93
def visit(relation, context = self)
  visitor(relation, context).root
end
visitor(relation, context = self) click to toggle source

Return a visitor for the given relation

@param [Relation] relation @param [Visitor] context

@return [Visitor]

@api private

# File lib/axiom/adapter/arango/visitor.rb, line 80
def visitor(relation, context = self)
  self.class.build(relation, context)
end