Module: SearchQueryParser

Defined in:
lib/search_query_parser.rb,
lib/search_query_parser/grammar.rb,
lib/search_query_parser/version.rb,
lib/search_query_parser/interpreter.rb

Defined Under Namespace

Classes: Grammar, Interpreter, ParseError

Constant Summary collapse

VERSION =
"0.1.1"

Class Method Summary collapse

Class Method Details

.to_string(str) ⇒ Object



7
8
9
# File 'lib/search_query_parser.rb', line 7

def self.to_string(str)
  @interpreter.parse(str).to_s
end

.to_ts_query(str, language = 'english', prefix = true) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/search_query_parser.rb', line 11

def self.to_ts_query(str, language = 'english', prefix = true)
  language = language.gsub(/[^a-zA-Z\-]/, '')
  @interpreter.parse(str).reduce do |op, x, y|
    case op
    when :term
      if prefix
        %Q{to_tsquery('#{language}', '#{x}:*')}
      else
        %Q{to_tsquery('#{language}', '#{x}')}
      end
    when :not
      %Q{(!! #{x})}
    when :and
      %Q{(#{x} && #{y})}
    when :or
      %Q{(#{x} || #{y})}
    when :join
      %Q{(#{x} <-> #{y})}
    end
  end
end