Module: Quiver::Adapter::FilterHelpers

Included in:
ActiveRecordAdapterFilterDefaults, MemoryAdapterFilterDefaults
Defined in:
lib/quiver/adapter/filter_helpers.rb

Instance Method Summary collapse

Instance Method Details

#filterObject



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# 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

#initialize(memo, filter) ⇒ Object



4
5
6
7
# File 'lib/quiver/adapter/filter_helpers.rb', line 4

def initialize(memo, filter)
  self.memo = memo
  self.filter_params = filter
end