class Hayfork::QueryParser

Attributes

klass[R]
querystring[R]

Public Class Methods

new(klass, querystring) click to toggle source
# File lib/hayfork/query_parser.rb, line 5
def initialize(klass, querystring)
  @klass = klass
  @querystring = querystring
end

Public Instance Methods

parse!() click to toggle source
# File lib/hayfork/query_parser.rb, line 10
def parse!
  phrases = []
  scanner = StringScanner.new(Hayfork.unaccent(querystring))

  until scanner.eos?
    parse_phrase(scanner.scan(/[^"]+/), phrases)
    break if scanner.eos?

    scanner.getch # "
    parse_exact_phrase(scanner.scan(/[^"]+/), phrases)
    scanner.getch # "
  end

  klass.new(phrases)
end
parse_exact_phrase(querystring, phrases) click to toggle source
# File lib/hayfork/query_parser.rb, line 30
def parse_exact_phrase(querystring, phrases)
  raise NotImplementedError
end
parse_phrase(querystring, phrases) click to toggle source
# File lib/hayfork/query_parser.rb, line 26
def parse_phrase(querystring, phrases)
  raise NotImplementedError
end