Module: AttrSearchable::Arel::Visitors::MySQL
- Defined in:
- lib/attr_searchable/arel/visitors.rb
Instance Method Summary collapse
- #visit_AttrSearchableGrammar_Attributes_Collection(o) ⇒ Object
- #visit_AttrSearchableGrammar_Nodes_And_Fulltext(o) ⇒ Object
- #visit_AttrSearchableGrammar_Nodes_FulltextExpression(o) ⇒ Object
- #visit_AttrSearchableGrammar_Nodes_MatchesFulltext(o) ⇒ Object
- #visit_AttrSearchableGrammar_Nodes_MatchesFulltextNot(o) ⇒ Object
- #visit_AttrSearchableGrammar_Nodes_Or_Fulltext(o) ⇒ Object
Instance Method Details
#visit_AttrSearchableGrammar_Attributes_Collection(o) ⇒ Object
91 92 93 |
# 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) ⇒ Object
109 110 111 112 113 114 115 116 117 118 119 |
# 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) ⇒ Object
95 96 97 |
# 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) ⇒ Object
103 104 105 106 107 |
# 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) ⇒ Object
99 100 101 |
# 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) ⇒ Object
121 122 123 |
# 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 |