Module: JSONAPIHelpers::Params::Filter

Defined in:
lib/jsonapi_helpers/params/filter.rb

Class Method Summary collapse

Class Method Details

._parse_date_string(string) ⇒ Object



39
40
41
# File 'lib/jsonapi_helpers/params/filter.rb', line 39

def self._parse_date_string(string)
  Date.parse(string, false)
end

.build(filters, allowed, transform = {}) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/jsonapi_helpers/params/filter.rb', line 8

def self.build(filters, allowed, transform = {})
  return {} if filters.nil? || filters.is_a?(String)

  filtered = {}
  filters.each do |key, value|
    key_sym = StringSupport.underscore(key).to_sym
    if allowed.include?(key_sym)
      filtered[key_sym] = format_value(value, transform[key_sym])
    end
  end
  filtered
end

.format_date_range(value) ⇒ Object



30
31
32
33
34
35
36
37
# File 'lib/jsonapi_helpers/params/filter.rb', line 30

def self.format_date_range(value)
  date_parts = value.split('..')
  start = _parse_date_string(date_parts.first)
  finish = _parse_date_string(date_parts.last)
  start..finish
rescue ArgumentError
  nil
end

.format_value(value, type) ⇒ Object



21
22
23
24
25
26
27
28
# File 'lib/jsonapi_helpers/params/filter.rb', line 21

def self.format_value(value, type)
  case type
  when :date_range
    format_date_range(value)
  else
    value
  end
end