module JSONAPIHelpers::Params::Filter

Public Class Methods

_parse_date_string(string) click to toggle source
# File lib/jsonapi_helpers/params/filter.rb, line 39
def self._parse_date_string(string)
  Date.parse(string, false)
end
build(filters, allowed, transform = {}) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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