class Querylicious::QueryReducer

Query Reducer for processing parsed query

Public Class Methods

call(reducable, query, &block) click to toggle source
# File lib/querylicious/query_reducer.rb, line 17
def self.call(reducable, query, &block)
  new(block).call(reducable, query)
end

Public Instance Methods

call(reducable, query) click to toggle source
# File lib/querylicious/query_reducer.rb, line 21
def call(reducable, query)
  parse_query(query).reduce(reducable) do |memo, rule|
    Matcher.call(rule, &reducer.to_proc.curry.call(memo))
  end
end
curry(*args) click to toggle source
# File lib/querylicious/query_reducer.rb, line 27
def curry(*args)
  to_proc.curry(*args)
end
to_proc() click to toggle source
# File lib/querylicious/query_reducer.rb, line 31
def to_proc
  public_method(:call).to_proc
end

Private Instance Methods

parse_query(query) click to toggle source
# File lib/querylicious/query_reducer.rb, line 45
def parse_query(query)
  Array(transformer.apply(parser.parse(query.to_s)))
end
parser() click to toggle source
# File lib/querylicious/query_reducer.rb, line 41
def parser
  @parser ||= Parser.new
end
transformer() click to toggle source
# File lib/querylicious/query_reducer.rb, line 37
def transformer
  @transformer ||= Transform.new
end