Sha256: 52c82abbe64c09e8b860872944b42199d981b346f8bbbcbb3a113e6fc6d78986
Contents?: true
Size: 827 Bytes
Versions: 31
Compression:
Stored size: 827 Bytes
Contents
module Recruiter module Filters def self.filter(type, params = {}) filter_class(type).new(params).filter end def self.filter_class(type) "Recruiter::Filters::#{type.to_s.classify}Filter".constantize end class Base attr_reader :query def self.filter(params = {}) new(params).filter end def initialize(params = {}) init_query params.each do |key, values| method = "with_#{key}" if respond_to?(method) send(method, *values) end end end def init_query end def filter query end def merge(scope = nil, &block) @query = query.merge(yield) if block_given? @query = query.merge(scope) if scope self end end end end
Version data entries
31 entries across 31 versions & 1 rubygems