Class: QueryStringInterface::FilterCollection

Inherits:
Object
  • Object
show all
Includes:
Helpers
Defined in:
lib/query_string_interface/filter_collection.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Helpers

#hash_with_indifferent_access, #replace_attribute, #replaced_attribute_name, #replaced_attribute_value

Constructor Details

#initialize(filters, default_filters = {}, attributes_to_replace = {}, raw_filters = nil) ⇒ FilterCollection

Returns a new instance of FilterCollection.



7
8
9
10
11
12
# File 'lib/query_string_interface/filter_collection.rb', line 7

def initialize(filters, default_filters={}, attributes_to_replace={}, raw_filters=nil)
  @filters = filters.with_indifferent_access
  @default_filters = default_filters.with_indifferent_access
  @attributes_to_replace = attributes_to_replace.with_indifferent_access
  @raw_filters = raw_filters.nil? ? @filters : raw_filters.with_indifferent_access
end

Instance Attribute Details

#default_filtersObject (readonly)

Returns the value of attribute default_filters.



5
6
7
# File 'lib/query_string_interface/filter_collection.rb', line 5

def default_filters
  @default_filters
end

#filtersObject (readonly)

Returns the value of attribute filters.



5
6
7
# File 'lib/query_string_interface/filter_collection.rb', line 5

def filters
  @filters
end

Instance Method Details

#filter_parsersObject



23
24
25
26
27
# File 'lib/query_string_interface/filter_collection.rb', line 23

def filter_parsers
  @filter_parsers ||= filters.map do |raw_attribute, raw_value|
    Filter.new(raw_attribute, raw_value, @attributes_to_replace, @raw_filters)
  end
end

#parseObject



14
15
16
17
18
19
20
21
# File 'lib/query_string_interface/filter_collection.rb', line 14

def parse
  result = default_filters.inject({}) do |result, item|
    raw_attribute, raw_value = item
    result[replaced_attribute_name(raw_attribute, @attributes_to_replace).to_s] = replaced_attribute_value(raw_attribute, raw_value, @attributes_to_replace, @raw_filters)
    result
  end
  result.merge(parsed_filters)
end