class Getto::Params::Search::Query

Public Class Methods

new(query:) click to toggle source
# File lib/getto/params/search.rb, line 97
def initialize(query:)
  @query = query
end

Public Instance Methods

to_h(convert:, check:) click to toggle source
# File lib/getto/params/search.rb, line 101
def to_h(convert:, check:)
  converters = {}
  if convert
    convert.call Converter.new(converters)
  end

  checkers = {}
  if check
    check.call Checker.new(checkers)
  end

  query = @query.map{|key,search|
    if converter = converters[key.to_s]
      [key.to_s, converter.call(search)]
    else
      [key.to_s, search]
    end
  }.to_h

  checkers.map{|key,checker|
    if search = query[key]
      if checker.call(search)
        [key, search]
      end
    end
  }.compact.to_h.transform_keys(&:to_sym)
end