module Quiver::Adapter::FilterHelpers

Attributes

filter_params[RW]
memo[RW]

Public Class Methods

new(memo, filter) click to toggle source
# File lib/quiver/adapter/filter_helpers.rb, line 4
def initialize(memo, filter)
  self.memo = memo
  self.filter_params = filter
end

Public Instance Methods

filter() click to toggle source
# File lib/quiver/adapter/filter_helpers.rb, line 9
def filter
  filter_params.inject(memo) do |memo, (attr, filter)|
    filter_attributes = filter.is_a?(Hash) ? filter : filter.filter_attributes
    filter_attributes.inject(memo) do |memo, (comparator, value)|
      if value.nil?
        memo
      else
        case comparator.to_s.downcase
        when 'eq'
          equal_filter(memo, attr, value)
        when 'not_eq'
          not_equal_filter(memo, attr, value)
        when 'in'
          in_filter(memo, attr, value)
        when 'not_in'
          not_in_filter(memo, attr, value)
        when 'lt'
          less_than_filter(memo, attr, value)
        when 'gt'
          greater_than_filter(memo, attr, value)
        when 'lte'
          less_than_or_equal_filter(memo, attr, value)
        when 'gte'
          greater_than_or_equal_filter(memo, attr, value)
        when 'not_lt'
          greater_than_or_equal_filter(memo, attr, value)
        when 'not_gt'
          less_than_or_equal_filter(memo, attr, value)
        when 'not_lte'
          greater_than_filter(memo, attr, value)
        when 'not_gte'
          less_than_filter(memo, attr, value)
        else
          if respond_to?("#{comparator.to_s.downcase}_filter", true)
            send("#{comparator.to_s.downcase}_filter", memo, attr, value)
          else
            memo
          end
        end
      end
    end
  end
end