Module: JSONAPIHelpers::Params::Filter
- Defined in:
- lib/jsonapi_helpers/params/filter.rb
Class Method Summary collapse
- ._parse_date_string(string) ⇒ Object
- .build(filters, allowed, transform = {}) ⇒ Object
- .format_date_range(value) ⇒ Object
- .format_value(value, type) ⇒ Object
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 |