attr-gather 1.1.1 → 1.1.2

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
  SHA256:
3
- metadata.gz: 070b59c7216cfb62efcfc5294b5c3adf0fba6ebc887541aa775bcacda23b7ef4
4
- data.tar.gz: bbaa3df40d203b8558fda936c82ca60d984261aaecc143ddf46759e5895521e1
3
+ metadata.gz: 8f0cfb5dd834161d41a92270f036981babbc4c64a7a2a0be6c223b52e68f22ed
4
+ data.tar.gz: e865667f933a51c3931e5c04d09d27bb30effabaae7aa247197f5b23e36908c6
5
5
  SHA512:
6
- metadata.gz: 174170a1e6e8770a18c8b3a20b18c8cadb0e1e33320902af8041d13463eb4850039750865cf2c2c063cfb206763a91c19ccc95b61b8d3a70e703bcf9590411e8
7
- data.tar.gz: 1741c549681ee4e91a53c7c3385ed05bb43ebcd8db2164c14cd4b9c79a4175c272a7557309b267d23fbe7bd79d16f63641a385871ae1d3406d1d5ca9d36557d0
6
+ metadata.gz: 4feb0be067955ac28cc1da31cf278a717a9aa56f43e97409fb110f822acacbae0fda1fc5bc2529c19a0e1d453bd87ef5a140ecde1494da5e5708c8ef4c47b7d4
7
+ data.tar.gz: 343523a4a84ec2326f9487051898ac3bce17e504a7bda5b93e4e03092bbd5aff4ae3a49b8cde9d2dfa24760803a783ff04d1b4fcc22f28954a798ab35d4503eb
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- attr-gather (1.1.1)
4
+ attr-gather (1.1.2)
5
5
  dry-container (~> 0.7)
6
6
 
7
7
  GEM
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'attr/gather/filters/noop'
4
+
3
5
  module Attr
4
6
  module Gather
5
7
  module Aggregators
@@ -11,8 +13,10 @@ module Attr
11
13
  class Base
12
14
  attr_accessor :filter
13
15
 
16
+ NOOP_FILTER ||= Filters::Noop.new
17
+
14
18
  def initialize(**opts)
15
- @filter = opts.delete(:filter)
19
+ @filter = opts.delete(:filter) || NOOP_FILTER
16
20
  end
17
21
 
18
22
  def call(_original_input, _results_array)
@@ -23,7 +23,7 @@ module Attr
23
23
 
24
24
  def call(input, execution_results)
25
25
  execution_results = execution_results.reverse_each if reverse?
26
- initial = merge_input? ? input.dup : {}
26
+ initial = unwrap_initial_input(input)
27
27
 
28
28
  result = execution_results.reduce(initial) do |memo, res|
29
29
  deep_merge(memo, unwrap_result(res))
@@ -34,6 +34,10 @@ module Attr
34
34
 
35
35
  private
36
36
 
37
+ def unwrap_initial_input(input)
38
+ merge_input? ? filter.call(input.dup).value : {}
39
+ end
40
+
37
41
  def reverse?
38
42
  @reverse
39
43
  end
@@ -23,7 +23,7 @@ module Attr
23
23
 
24
24
  def call(input, execution_results)
25
25
  execution_results = execution_results.reverse_each if reverse?
26
- initial = merge_input? ? input.dup : {}
26
+ initial = unwrap_initial_input(input)
27
27
 
28
28
  result = execution_results.reduce(initial) do |memo, res|
29
29
  memo.merge(unwrap_result(res))
@@ -34,6 +34,10 @@ module Attr
34
34
 
35
35
  private
36
36
 
37
+ def unwrap_initial_input(input)
38
+ merge_input? ? filter.call(input.dup).value : {}
39
+ end
40
+
37
41
  def reverse?
38
42
  @reverse
39
43
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Attr
4
4
  module Gather
5
- VERSION = '1.1.1'
5
+ VERSION = '1.1.2'
6
6
  end
7
7
  end
@@ -88,13 +88,13 @@ module Attr
88
88
  #
89
89
  # @api public
90
90
  def aggregator(agg = nil, opts = EMPTY_HASH)
91
- if agg.nil? && !defined?(@aggregator)
92
- @aggregator = Aggregators.default
93
- return @aggregator
94
- end
95
-
96
- @aggregator = Aggregators.resolve(agg, filter: filter, **opts) if agg
97
- @aggregator
91
+ @aggregator = if agg.nil? && !defined?(@aggregator)
92
+ Aggregators.default
93
+ elsif agg
94
+ Aggregators.resolve(agg, filter: filter, **opts)
95
+ else
96
+ @aggregator
97
+ end
98
98
  end
99
99
 
100
100
  # Defines a filter for filtering out invalid values
@@ -130,12 +130,16 @@ module Attr
130
130
  # @param args [Array<Object>] arguments for initializing the filter
131
131
  #
132
132
  # @api public
133
- def filter(filt = Undefined, *args, **opts)
134
- if filt == Undefined && !defined?(@filter)
135
- @filter = Filters.default
136
- elsif filt != Undefined
137
- @filter = Filters.resolve(filt, *args, **opts)
138
- end
133
+ def filter(filt = nil, *args, **opts)
134
+ @filter = if filt.nil? && !defined?(@filter)
135
+ Filters.default
136
+ elsif filt
137
+ Filters.resolve(filt, *args, **opts)
138
+ else
139
+ @filter
140
+ end
141
+
142
+ aggregator.filter = @filter
139
143
 
140
144
  @filter
141
145
  end
@@ -169,7 +173,7 @@ module Attr
169
173
  # @api public
170
174
  def filter_with_contract(arg = nil, &blk)
171
175
  contract = block_given? ? build_inline_contract_filter(&blk) : arg
172
- @filter = Filters.resolve(:contract, contract)
176
+ filter(:contract, contract)
173
177
  end
174
178
 
175
179
  private
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: attr-gather
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ian Ker-Seymer