module AttrSearchable::Arel::Visitors::MySQL

Public Instance Methods

visit_AttrSearchableGrammar_Attributes_Collection(o, a) click to toggle source
# File lib/attr_searchable/arel/visitors.rb, line 91
def visit_AttrSearchableGrammar_Attributes_Collection(o, a)
  o.attributes.collect { |attribute| visit attribute.attribute, a }.join(", ")
end
visit_AttrSearchableGrammar_Nodes_And_Fulltext(o, a) click to toggle source
# File lib/attr_searchable/arel/visitors.rb, line 109
def visit_AttrSearchableGrammar_Nodes_And_Fulltext(o, a)
  res = o.nodes.collect do |node|
    if node.is_a?(AttrSearchableGrammar::Nodes::MatchesFulltextNot)
      visit node, a
    else
      node.nodes.size > 1 ? "+(#{visit node, a})" : "+#{visit node, a}"
    end
  end

  res.join " "
end
visit_AttrSearchableGrammar_Nodes_FulltextExpression(o, a) click to toggle source
# File lib/attr_searchable/arel/visitors.rb, line 95
def visit_AttrSearchableGrammar_Nodes_FulltextExpression(o, a)
  "MATCH(#{visit o.collection, a}) AGAINST(#{visit visit(o.node, a), a} IN BOOLEAN MODE)"
end
visit_AttrSearchableGrammar_Nodes_MatchesFulltext(o, a) click to toggle source
# File lib/attr_searchable/arel/visitors.rb, line 103
def visit_AttrSearchableGrammar_Nodes_MatchesFulltext(o, a)
  words = o.right.split(/[\s+'"<>()~-]+/)

  words.size > 1 ? "\"#{words.join " "}\"" : words.first
end
visit_AttrSearchableGrammar_Nodes_MatchesFulltextNot(o, a) click to toggle source
# File lib/attr_searchable/arel/visitors.rb, line 99
def visit_AttrSearchableGrammar_Nodes_MatchesFulltextNot(o, a)
  o.right.split(/[\s+'"<>()~-]+/).collect { |word| "-#{word}" }.join(" ")
end
visit_AttrSearchableGrammar_Nodes_Or_Fulltext(o, a) click to toggle source
# File lib/attr_searchable/arel/visitors.rb, line 121
def visit_AttrSearchableGrammar_Nodes_Or_Fulltext(o, a)
  o.nodes.collect { |node| "(#{visit node, a})" }.join(" ")
end