attr-gather 1.1.1 → 1.1.2

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
  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