active_facets 1.2.2 → 1.2.3

Sign up to get free protection for your applications and to get access to all the features.
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