class Arel::Visitors::DepthFirst

Constants

DISPATCH

Public Class Methods

new(block = nil) click to toggle source
Calls superclass method Arel::Visitors::Visitor.new
# File lib/arel/visitors/depth_first.rb, line 4
def initialize block = nil
  @block = block || Proc.new
  super()
end

Private Instance Methods

function(o) click to toggle source
# File lib/arel/visitors/depth_first.rb, line 32
def function o
  visit o.expressions
  visit o.alias
  visit o.distinct
end
get_dispatch_cache() click to toggle source
# File lib/arel/visitors/depth_first.rb, line 179
def get_dispatch_cache
  DISPATCH
end
nary(o) click to toggle source
# File lib/arel/visitors/depth_first.rb, line 56
def nary o
  o.children.each { |child| visit child}
end
Also aliased as: visit_Arel_Nodes_And
visit(o) click to toggle source
Calls superclass method Arel::Visitors::Visitor#visit
# File lib/arel/visitors/depth_first.rb, line 11
def visit o
  super
  @block.call o
end
visit_ActiveSupport_Multibyte_Chars(o)
Alias for: terminal
visit_ActiveSupport_StringInquirer(o)
Alias for: terminal
visit_Arel_Attribute(o) click to toggle source
# File lib/arel/visitors/depth_first.rb, line 96
def visit_Arel_Attribute o
  visit o.relation
  visit o.name
end
visit_Arel_Attributes_Attribute(o)
visit_Arel_Attributes_Boolean(o)
visit_Arel_Attributes_Decimal(o)
visit_Arel_Attributes_Float(o)
visit_Arel_Attributes_Integer(o)
visit_Arel_Attributes_String(o)
visit_Arel_Attributes_Time(o)
visit_Arel_Nodes_And(o)
Alias for: nary
visit_Arel_Nodes_As(o)
Alias for: binary
visit_Arel_Nodes_Ascending(o)
Alias for: unary
visit_Arel_Nodes_Assignment(o)
Alias for: binary
visit_Arel_Nodes_Avg(o)
Alias for: function
visit_Arel_Nodes_Between(o)
Alias for: binary
visit_Arel_Nodes_BindParam(o)
Alias for: terminal
visit_Arel_Nodes_Count(o) click to toggle source
# File lib/arel/visitors/depth_first.rb, line 50
def visit_Arel_Nodes_Count o
  visit o.expressions
  visit o.alias
  visit o.distinct
end
visit_Arel_Nodes_DeleteStatement(o)
Alias for: binary
visit_Arel_Nodes_Descending(o)
Alias for: unary
visit_Arel_Nodes_DoesNotMatch(o)
Alias for: binary
visit_Arel_Nodes_Equality(o)
Alias for: binary
visit_Arel_Nodes_Exists(o)
Alias for: function
visit_Arel_Nodes_False(o)
Alias for: terminal
visit_Arel_Nodes_FullOuterJoin(o)
Alias for: binary
visit_Arel_Nodes_GreaterThan(o)
Alias for: binary
visit_Arel_Nodes_GreaterThanOrEqual(o)
Alias for: binary
visit_Arel_Nodes_Group(o)
Alias for: unary
visit_Arel_Nodes_Grouping(o)
Alias for: unary
visit_Arel_Nodes_Having(o)
Alias for: unary
visit_Arel_Nodes_In(o)
Alias for: binary
visit_Arel_Nodes_InfixOperation(o)
Alias for: binary
visit_Arel_Nodes_InnerJoin(o)
Alias for: binary
visit_Arel_Nodes_InsertStatement(o) click to toggle source
# File lib/arel/visitors/depth_first.rb, line 137
def visit_Arel_Nodes_InsertStatement o
  visit o.relation
  visit o.columns
  visit o.values
end
visit_Arel_Nodes_JoinSource(o)
Alias for: binary
visit_Arel_Nodes_LessThan(o)
Alias for: binary
visit_Arel_Nodes_LessThanOrEqual(o)
Alias for: binary
visit_Arel_Nodes_Limit(o)
Alias for: unary
visit_Arel_Nodes_Lock(o)
Alias for: terminal
visit_Arel_Nodes_Matches(o)
Alias for: binary
visit_Arel_Nodes_Max(o)
Alias for: function
visit_Arel_Nodes_Min(o)
Alias for: function
visit_Arel_Nodes_NamedFunction(o) click to toggle source
# File lib/arel/visitors/depth_first.rb, line 43
def visit_Arel_Nodes_NamedFunction o
  visit o.name
  visit o.expressions
  visit o.distinct
  visit o.alias
end
visit_Arel_Nodes_Node(o)
Alias for: terminal
visit_Arel_Nodes_Not(o)
Alias for: unary
visit_Arel_Nodes_NotEqual(o)
Alias for: binary
visit_Arel_Nodes_NotIn(o)
Alias for: binary
visit_Arel_Nodes_NotRegexp(o)
Alias for: binary
visit_Arel_Nodes_Offset(o)
Alias for: unary
visit_Arel_Nodes_On(o)
Alias for: unary
visit_Arel_Nodes_Or(o)
Alias for: binary
visit_Arel_Nodes_Ordering(o)
Alias for: unary
visit_Arel_Nodes_OuterJoin(o)
Alias for: binary
visit_Arel_Nodes_Regexp(o)
Alias for: binary
visit_Arel_Nodes_RightOuterJoin(o)
Alias for: binary
visit_Arel_Nodes_SelectCore(o) click to toggle source
# File lib/arel/visitors/depth_first.rb, line 143
def visit_Arel_Nodes_SelectCore o
  visit o.projections
  visit o.source
  visit o.wheres
  visit o.groups
  visit o.windows
  visit o.having
end
visit_Arel_Nodes_SelectStatement(o) click to toggle source
# File lib/arel/visitors/depth_first.rb, line 152
def visit_Arel_Nodes_SelectStatement o
  visit o.cores
  visit o.orders
  visit o.limit
  visit o.lock
  visit o.offset
end
visit_Arel_Nodes_SqlLiteral(o)
Alias for: terminal
visit_Arel_Nodes_StringJoin(o) click to toggle source
# File lib/arel/visitors/depth_first.rb, line 92
def visit_Arel_Nodes_StringJoin o
  visit o.left
end
visit_Arel_Nodes_Sum(o)
Alias for: function
visit_Arel_Nodes_TableAlias(o)
Alias for: binary
visit_Arel_Nodes_Top(o)
Alias for: unary
visit_Arel_Nodes_True(o)
Alias for: terminal
visit_Arel_Nodes_Union(o)
Alias for: binary
visit_Arel_Nodes_UnqualifiedColumn(o)
Alias for: unary
visit_Arel_Nodes_UpdateStatement(o) click to toggle source
# File lib/arel/visitors/depth_first.rb, line 160
def visit_Arel_Nodes_UpdateStatement o
  visit o.relation
  visit o.values
  visit o.wheres
  visit o.orders
  visit o.limit
end
visit_Arel_Nodes_Values(o)
Alias for: binary
visit_Arel_Nodes_Window(o)
Alias for: terminal
visit_Arel_Table(o) click to toggle source
# File lib/arel/visitors/depth_first.rb, line 108
def visit_Arel_Table o
  visit o.name
end
visit_Array(o) click to toggle source
# File lib/arel/visitors/depth_first.rb, line 168
def visit_Array o
  o.each { |i| visit i }
end
Also aliased as: visit_Set
visit_BigDecimal(o)
Alias for: terminal
visit_Bignum(o)
Alias for: terminal
visit_Class(o)
Alias for: terminal
visit_Date(o)
Alias for: terminal
visit_DateTime(o)
Alias for: terminal
visit_FalseClass(o)
Alias for: terminal
visit_Fixnum(o)
Alias for: terminal
visit_Float(o)
Alias for: terminal
visit_Hash(o) click to toggle source
# File lib/arel/visitors/depth_first.rb, line 173
def visit_Hash o
  o.each { |k,v| visit(k); visit(v) }
end
visit_NilClass(o)
Alias for: terminal
visit_Set(o)
Alias for: visit_Array
visit_String(o)
Alias for: terminal
visit_Symbol(o)
Alias for: terminal
visit_Time(o)
Alias for: terminal
visit_TrueClass(o)
Alias for: terminal