class SearchCop::Visitors::Visitor

Attributes

connection[RW]

rubocop:disable Naming/MethodName

Public Class Methods

new(connection) click to toggle source
# File lib/search_cop/visitors/visitor.rb, line 8
def initialize(connection)
  @connection = connection

  extend(SearchCop::Visitors::Mysql) if @connection.adapter_name =~ /mysql|trilogy/i
  extend(SearchCop::Visitors::Postgres) if @connection.adapter_name =~ /postgres|postgis/i
  extend(SearchCop::Visitors::Sqlite) if @connection.adapter_name =~ /sqlite/i
end

Public Instance Methods

quote(value) click to toggle source
# File lib/search_cop/visitors/visitor.rb, line 88
def quote(value)
  connection.quote value
end
quote_column_name(name) click to toggle source
# File lib/search_cop/visitors/visitor.rb, line 68
def quote_column_name(name)
  connection.quote_column_name name
end
quote_table_name(name) click to toggle source
# File lib/search_cop/visitors/visitor.rb, line 64
def quote_table_name(name)
  connection.quote_table_name name
end
visit(visit_node = node) click to toggle source
# File lib/search_cop/visitors/visitor.rb, line 16
def visit(visit_node = node)
  send "visit_#{visit_node.class.name.gsub("::", "_")}", visit_node
end
visit_Date(value)
Alias for: quote
visit_FalseClass(value)
Alias for: quote
visit_Fixnum(value)
Alias for: quote
visit_Float(value)
Alias for: quote
visit_Integer(value)
Alias for: quote
visit_SearchCopGrammar_Attributes_Boolean(attribute)
Alias for: visit_attribute
visit_SearchCopGrammar_Attributes_Date(attribute)
Alias for: visit_attribute
visit_SearchCopGrammar_Attributes_Datetime(attribute)
Alias for: visit_attribute
visit_SearchCopGrammar_Attributes_Decimal(attribute)
Alias for: visit_attribute
visit_SearchCopGrammar_Attributes_Float(attribute)
Alias for: visit_attribute
visit_SearchCopGrammar_Attributes_Integer(attribute)
Alias for: visit_attribute
visit_SearchCopGrammar_Attributes_String(attribute)
Alias for: visit_attribute
visit_SearchCopGrammar_Attributes_Text(attribute)
Alias for: visit_attribute
visit_SearchCopGrammar_Attributes_Time(attribute)
Alias for: visit_attribute
visit_SearchCopGrammar_Attributes_Timestamp(attribute)
Alias for: visit_attribute
visit_SearchCopGrammar_Attributes_Timestamptz(attribute)
Alias for: visit_attribute
visit_SearchCopGrammar_Nodes_And(node) click to toggle source
# File lib/search_cop/visitors/visitor.rb, line 20
def visit_SearchCopGrammar_Nodes_And(node)
  "(#{node.nodes.collect { |n| visit n }.join(" AND ")})"
end
visit_SearchCopGrammar_Nodes_Equality(node) click to toggle source
# File lib/search_cop/visitors/visitor.rb, line 44
def visit_SearchCopGrammar_Nodes_Equality(node)
  "#{visit node.left} = #{visit node.right}"
end
visit_SearchCopGrammar_Nodes_Generator(node) click to toggle source
# File lib/search_cop/visitors/visitor.rb, line 60
def visit_SearchCopGrammar_Nodes_Generator(node)
  instance_exec visit(node.left), node.right[:value], &node.right[:generator]
end
visit_SearchCopGrammar_Nodes_GreaterThan(node) click to toggle source
# File lib/search_cop/visitors/visitor.rb, line 28
def visit_SearchCopGrammar_Nodes_GreaterThan(node)
  "#{visit node.left} > #{visit node.right}"
end
visit_SearchCopGrammar_Nodes_GreaterThanOrEqual(node) click to toggle source
# File lib/search_cop/visitors/visitor.rb, line 32
def visit_SearchCopGrammar_Nodes_GreaterThanOrEqual(node)
  "#{visit node.left} >= #{visit node.right}"
end
visit_SearchCopGrammar_Nodes_LessThan(node) click to toggle source
# File lib/search_cop/visitors/visitor.rb, line 36
def visit_SearchCopGrammar_Nodes_LessThan(node)
  "#{visit node.left} < #{visit node.right}"
end
visit_SearchCopGrammar_Nodes_LessThanOrEqual(node) click to toggle source
# File lib/search_cop/visitors/visitor.rb, line 40
def visit_SearchCopGrammar_Nodes_LessThanOrEqual(node)
  "#{visit node.left} <= #{visit node.right}"
end
visit_SearchCopGrammar_Nodes_Matches(node) click to toggle source
# File lib/search_cop/visitors/visitor.rb, line 52
def visit_SearchCopGrammar_Nodes_Matches(node)
  "(#{visit node.left} IS NOT NULL AND #{visit node.left} LIKE #{visit node.right} ESCAPE #{visit "\\"})"
end
visit_SearchCopGrammar_Nodes_Not(node) click to toggle source
# File lib/search_cop/visitors/visitor.rb, line 56
def visit_SearchCopGrammar_Nodes_Not(node)
  "NOT (#{visit node.object})"
end
visit_SearchCopGrammar_Nodes_NotEqual(node) click to toggle source
# File lib/search_cop/visitors/visitor.rb, line 48
def visit_SearchCopGrammar_Nodes_NotEqual(node)
  "#{visit node.left} != #{visit node.right}"
end
visit_SearchCopGrammar_Nodes_Or(node) click to toggle source
# File lib/search_cop/visitors/visitor.rb, line 24
def visit_SearchCopGrammar_Nodes_Or(node)
  "(#{node.nodes.collect { |n| visit n }.join(" OR ")})"
end
visit_String(value)
Alias for: quote
visit_Symbol(value)
Alias for: quote
visit_Time(value)
Alias for: quote
visit_TrueClass(value)
Alias for: quote