active_facets 1.2.2 → 1.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 63e1ea8c7c86286554a205c84e6ddc7224be9b00
4
- data.tar.gz: dbc2ed04992db135f887f8bc56bc21ec0fe30f37
3
+ metadata.gz: 84aaee9f8be13da53c3dbc1000012eeae6dd2837
4
+ data.tar.gz: b65c1280f5c33d77ecde385901c51f88d591a881
5
5
  SHA512:
6
- metadata.gz: 773bafd97bc95b401a0b12dbc6a0edd5ac82f18f769e7dc2715725cc226fd6ca0888ed6ba7198b5532fcdb6d32df2bc68cd4f91901307660844dd4999ebda1b1
7
- data.tar.gz: 99d24b3b9c658b458329ee385147f7aded91b1593ace925b5d1f50d35db62a69da21dc175a363bd2dbdefd84dfa0f766f07149de996b4dc2063163ca4ed9b9cf
6
+ metadata.gz: 5b060f4a3173117eaa143d14c786794748035b1a4e1e992080f64fd4b8e393635a6122a9ed0e017471e058aa528fb52ae80a51166655f641bb4d401b3ee5a829
7
+ data.tar.gz: f9588af0a223e4c19ba75954afe424e2e1bc0b0bb8a3ec3777288f3c89d710daa470fb8b32f304aca35ca8691362a3c23e760349faf988cc7056b320845f20a0
data/lib/active_facets.rb CHANGED
@@ -5,6 +5,7 @@ require 'active_record'
5
5
  require 'active_facets/errors/attribute_error'
6
6
  require 'active_facets/errors/configuration_error'
7
7
  require 'active_facets/errors/lookup_error'
8
+ require 'active_facets/filter'
8
9
  require 'active_facets/acts_as_active_facet'
9
10
  require 'active_facets/serializer/base'
10
11
  require 'active_facets/serializer/facade'
@@ -53,7 +54,7 @@ module ActiveFacets
53
54
  end
54
55
 
55
56
  def self.global_filter(name)
56
- ActiveFacets::ActsAsActiveFacet::Filters.global_filters[name] = Proc.new
57
+ ActiveFacets::Filter.register_global(name, Proc.new)
57
58
  end
58
59
 
59
60
  def self.resource_mapper
@@ -10,36 +10,6 @@ module ActiveFacets
10
10
  included do
11
11
  end
12
12
 
13
- module Filters
14
- mattr_accessor :filters, :global_filters
15
- self.filters, self.global_filters = {}, {}
16
-
17
- def self.apply_globals_to(receiver)
18
- global_filters.each do |filter_name, filter_method|
19
- filter_method_name = receiver.acts_as_active_facet_options[:filter_method_name]
20
- receiver.send(filter_method_name, filter_name, &filter_method)
21
- end
22
- end
23
-
24
- # @return [Hash] all filters registered on this resource (and superclass)
25
- def self.registered_filters_for(receiver)
26
- receiver_filters = filters[receiver.name] ||= {}
27
- receiver_filters.reverse_merge(registered_filters_for(receiver.superclass)) if has_registered_filters_for?(receiver.superclass)
28
- receiver_filters
29
- end
30
-
31
- def self.register_filter_for(receiver, filter_name, filter_method_name)
32
- receiver_filters = filters[receiver.name] ||= {}
33
- receiver_filters[filter_name.to_sym] = filter_method_name.to_sym
34
- receiver_filters
35
- end
36
-
37
- def self.has_registered_filters_for?(receiver)
38
- filters.key?(receiver.name)
39
- end
40
-
41
- end
42
-
43
13
  module ClassMethods
44
14
  def acts_as_active_facet(options = {})
45
15
 
@@ -80,14 +50,15 @@ module ActiveFacets
80
50
  filter_method_name ||= "registered_filter_#{filter_name}"
81
51
  define_singleton_method(filter_method_name, filter_method) if filter_method
82
52
 
83
- ActiveFacets::ActsAsActiveFacet::Filters.register_filter_for(self, filter_name, filter_method_name)
53
+ ActiveFacets::Filter.register(self, filter_name, filter_method_name)
84
54
  end
85
55
 
86
56
  # Applies all filters registered with this resource on a ProxyCollection
87
57
  # @param filter_values [Hash] keys = registerd filter name, values = filter arguments
58
+ # TODO:: change scoped to self(or similar) to preserve the current relation
88
59
  define_method(acts_as_active_facet_options[:apply_filters_method_name]) do |filter_values = nil|
89
60
  filter_values = (filter_values || {}).with_indifferent_access
90
- ActiveFacets::ActsAsActiveFacet::Filters.registered_filters_for(self).inject(self) do |result, (k,v)|
61
+ ActiveFacets::Filter.registered_filters_for(self).inject(scoped) do |result, (k,v)|
91
62
  filter = ActiveFacets::ResourceManager.instance.resource_map(self).detect { |map_entry|
92
63
  filter_values.keys.include? "#{k}_#{map_entry}"
93
64
  }
@@ -252,7 +252,6 @@ module ActiveFacets
252
252
  def merge_field_sets(a, b)
253
253
  na = normalize_field_set(a)
254
254
  nb = normalize_field_set(b)
255
- binding.pry unless nb
256
255
  nb.inject(na.dup) do |result, (field_set, nested_field_sets)|
257
256
  result[field_set] = merge_field_sets(na[field_set], nested_field_sets)
258
257
  result
@@ -0,0 +1,36 @@
1
+ #TODO --jdc comment this class
2
+ module ActiveFacets
3
+ class Filter
4
+ cattr_accessor :filters, :global_filters
5
+ self.filters, self.global_filters = {}, {}
6
+
7
+ def self.register_global(name, proc)
8
+ global_filters[name] = proc
9
+ end
10
+
11
+ def self.register(receiver, filter_name, filter_method_name)
12
+ receiver_filters = filters[receiver.name] ||= {}
13
+ receiver_filters[filter_name.to_sym] = filter_method_name.to_sym
14
+ receiver_filters
15
+ end
16
+
17
+ def self.apply_globals_to(receiver)
18
+ global_filters.each do |filter_name, filter_method|
19
+ filter_method_name = receiver.acts_as_active_facet_options[:filter_method_name]
20
+ receiver.send(filter_method_name, filter_name, &filter_method)
21
+ end
22
+ end
23
+
24
+ #TODO --jdc memoize
25
+ # @return [Hash] all filters registered on this resource (and superclass)
26
+ def self.registered_filters_for(receiver)
27
+ receiver_filters = filters[receiver.name] ||= {}
28
+ receiver_filters.reverse_merge(registered_filters_for(receiver.superclass)) if filters_registered_for?(receiver.superclass)
29
+ receiver_filters
30
+ end
31
+
32
+ def self.filters_registered_for?(receiver)
33
+ filters.key?(receiver.name)
34
+ end
35
+ end
36
+ end
@@ -101,7 +101,6 @@ module ActiveFacets
101
101
  # @return [JSON]
102
102
  def serialize!
103
103
  json = {}.with_indifferent_access
104
-
105
104
  config.field_set_itterator(fields) do |scope, nested_scopes|
106
105
  begin
107
106
  json[scope] = get_resource_attribute scope, nested_scopes if allowed_field?(scope)
@@ -109,7 +108,6 @@ module ActiveFacets
109
108
  # Deliberately do nothing. Ignore scopes that do not map to resource methods (or aliases)
110
109
  end
111
110
  end
112
-
113
111
  apply_custom_serializers! json
114
112
  end
115
113
 
@@ -1,3 +1,3 @@
1
1
  module ActiveFacets
2
- VERSION = "1.2.2"
2
+ VERSION = "1.2.3"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_facets
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
4
+ version: 1.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - The Honest Company
@@ -281,6 +281,7 @@ files:
281
281
  - lib/active_facets/errors/attribute_error.rb
282
282
  - lib/active_facets/errors/configuration_error.rb
283
283
  - lib/active_facets/errors/lookup_error.rb
284
+ - lib/active_facets/filter.rb
284
285
  - lib/active_facets/resource_manager.rb
285
286
  - lib/active_facets/serializer/base.rb
286
287
  - lib/active_facets/serializer/facade.rb