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 5
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 38
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 193
def get_dispatch_cache
  DISPATCH
end
nary(o) click to toggle source
# File lib/arel/visitors/depth_first.rb, line 68
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 12
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 109
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_Case(o) click to toggle source
# File lib/arel/visitors/depth_first.rb, line 62
def visit_Arel_Nodes_Case o
  visit o.case
  visit o.conditions
  visit o.default
end
visit_Arel_Nodes_Concat(o)
Alias for: binary
visit_Arel_Nodes_Count(o) click to toggle source
# File lib/arel/visitors/depth_first.rb, line 56
def visit_Arel_Nodes_Count o
  visit o.expressions
  visit o.alias
  visit o.distinct
end
visit_Arel_Nodes_Cube(o)
Alias for: unary
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_Else(o)
Alias for: unary
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_GroupingElement(o)
Alias for: unary
visit_Arel_Nodes_GroupingSet(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 151
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 49
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_RollUp(o)
Alias for: unary
visit_Arel_Nodes_SelectCore(o) click to toggle source
# File lib/arel/visitors/depth_first.rb, line 157
def visit_Arel_Nodes_SelectCore o
  visit o.projections
  visit o.source
  visit o.wheres
  visit o.groups
  visit o.windows
  visit o.havings
end
visit_Arel_Nodes_SelectStatement(o) click to toggle source
# File lib/arel/visitors/depth_first.rb, line 166
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 105
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_UnqualifiedColumn(o)
Alias for: unary
visit_Arel_Nodes_UpdateStatement(o) click to toggle source
# File lib/arel/visitors/depth_first.rb, line 174
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_When(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 121
def visit_Arel_Table o
  visit o.name
end
visit_Array(o) click to toggle source
# File lib/arel/visitors/depth_first.rb, line 182
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 187
def visit_Hash o
  o.each { |k,v| visit(k); visit(v) }
end
visit_Integer(o)
Alias for: terminal
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