manufacturable 1.2.0 → 1.4.1

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: a4192577ea327220950340982c5fac55172428303cb32c52de978701d4369855
4
- data.tar.gz: e204c879545f141e51135494e1bc4a3c2f603a4095187492bf143de185df48d0
3
+ metadata.gz: 07eaa0e617a3777c8b2c1a20c7f15f0fcd5b8efafe06fa1c57582e98499d0837
4
+ data.tar.gz: 4a8667cbd20f52417c39340cfafdb3a0affb1af92f0686f653760c7bbe681d40
5
5
  SHA512:
6
- metadata.gz: 44b29865b91b459befc6ff8f7b6a15d10f2a89a332e9b934812f7ef1a7e90292244cc54f596e7db2828391ef1ea5284649a61b25a664066f3ed52223bc3bb76c
7
- data.tar.gz: cea48b3e2b8b90881d5f3f8f870397ef62ee8d67346d045fc83a7060cb9bbae98f6a5933dcf89c7be3792e2400520e01684d5a28210f00a810d2ef727401a8ca
6
+ metadata.gz: 72fbadfba6e099f9844bc1f8a6275baab49b1e915115975620f5649b01f99e89ee935b12d0aca7523851d0d13788ea30bc94bcbc319f92ff5630791f5dc7dafc
7
+ data.tar.gz: e9ef2e576429dc2112df98c6630c469e2bf334533edc0d9888a8f6321efed7cc1f92e1048a4f7250a115db6a46b92255372a1514ba7df5c50395474407ae9a35
data/README.md CHANGED
@@ -280,6 +280,6 @@ opportunity to work on things we're still proud of today.
280
280
  [nop]: https://en.wikipedia.org/wiki/Null_object_pattern
281
281
  [gem]: https://rubygems.org
282
282
  [git]: https://github.com/first-try-software/manufacturable
283
- [cod]: https://github.com/first-try-software/manufacturable/blob/master/CODE_OF_CONDUCT.md
283
+ [cod]: https://github.com/first-try-software/manufacturable/blob/main/CODE_OF_CONDUCT.md
284
284
  [mit]: https://opensource.org/licenses/MIT
285
- [ind]: https://github.com/entelo/industrialist
285
+ [ind]: https://github.com/entelo/industrialist
@@ -6,20 +6,20 @@ require 'manufacturable/object_factory'
6
6
  require 'manufacturable/railtie' if defined?(Rails)
7
7
 
8
8
  module Manufacturable
9
- def self.build(*args)
10
- Builder.build(*args)
9
+ def self.build(*args, **kwargs)
10
+ Builder.build(*args, **kwargs)
11
11
  end
12
12
 
13
- def self.build_one(*args)
14
- Builder.build_one(*args)
13
+ def self.build_one(*args, **kwargs)
14
+ Builder.build_one(*args, **kwargs)
15
15
  end
16
16
 
17
- def self.build_many(*args)
18
- Builder.build_all(*args)
17
+ def self.build_many(*args, **kwargs)
18
+ Builder.build_all(*args, **kwargs)
19
19
  end
20
20
 
21
- def self.build_all(*args)
22
- Builder.build_all(*args)
21
+ def self.build_all(*args, **kwargs)
22
+ Builder.build_all(*args, **kwargs)
23
23
  end
24
24
 
25
25
  def self.registered_types
@@ -30,6 +30,10 @@ module Manufacturable
30
30
  Registrar.registered_keys(type)
31
31
  end
32
32
 
33
+ def self.reset!
34
+ Registrar.reset!
35
+ end
36
+
33
37
  def self.config
34
38
  yield(Config)
35
39
  Config.load_paths
@@ -2,16 +2,16 @@ require 'manufacturable/registrar'
2
2
 
3
3
  module Manufacturable
4
4
  class Builder
5
- def self.build(*args)
6
- self.new(*args).build
5
+ def self.build(*args, **kwargs)
6
+ self.new(*args, **kwargs).build
7
7
  end
8
8
 
9
- def self.build_one(*args)
10
- self.new(*args).build_one
9
+ def self.build_one(*args, **kwargs)
10
+ self.new(*args, **kwargs).build_one
11
11
  end
12
12
 
13
- def self.build_all(*args)
14
- self.new(*args).build_all
13
+ def self.build_all(*args, **kwargs)
14
+ self.new(*args, **kwargs).build_all
15
15
  end
16
16
 
17
17
  def build
@@ -28,10 +28,10 @@ module Manufacturable
28
28
 
29
29
  private
30
30
 
31
- attr_reader :type, :key, :args
31
+ attr_reader :type, :key, :args, :kwargs
32
32
 
33
- def initialize(type, key, *args)
34
- @type, @key, @args = type, key, args
33
+ def initialize(type, key, *args, **kwargs)
34
+ @type, @key, @args, @kwargs = type, key, args, kwargs
35
35
  end
36
36
 
37
37
  def return_first?
@@ -39,7 +39,7 @@ module Manufacturable
39
39
  end
40
40
 
41
41
  def instances
42
- @instances ||= klasses.map { |klass| klass&.new(*args) }
42
+ @instances ||= klasses.map { |klass| klass&.new(*args, **kwargs_with_key) }
43
43
  end
44
44
 
45
45
  def klasses
@@ -47,7 +47,11 @@ module Manufacturable
47
47
  end
48
48
 
49
49
  def last_instance
50
- last_klass&.new(*args)
50
+ last_klass&.new(*args, **kwargs_with_key)
51
+ end
52
+
53
+ def kwargs_with_key
54
+ kwargs.merge(manufacturable_item_key: key)
51
55
  end
52
56
 
53
57
  def last_klass
@@ -2,6 +2,21 @@ require 'manufacturable/registrar'
2
2
 
3
3
  module Manufacturable
4
4
  module Item
5
+ def self.extended(base)
6
+ base.instance_eval do
7
+ def new(*args, **kwargs, &block)
8
+ key = kwargs.delete(:manufacturable_item_key)
9
+ instance = kwargs.empty? ? super(*args, &block) : super
10
+ instance.instance_variable_set(:@manufacturable_item_key, key)
11
+ instance
12
+ end
13
+ end
14
+
15
+ base.class_eval do
16
+ attr_reader :manufacturable_item_key
17
+ end
18
+ end
19
+
5
20
  def corresponds_to(key, type = self.superclass)
6
21
  key = key == type ? Registrar::ALL_KEY : key
7
22
  Registrar.register(type, key, self)
@@ -20,6 +20,10 @@ module Manufacturable
20
20
  registry[type].keys
21
21
  end
22
22
 
23
+ def reset!
24
+ registry.clear
25
+ end
26
+
23
27
  private
24
28
 
25
29
  def registry
@@ -1,3 +1,3 @@
1
1
  module Manufacturable
2
- VERSION = "1.2.0"
2
+ VERSION = "1.4.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: manufacturable
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alan Ridlehoover
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2020-06-19 00:00:00.000000000 Z
12
+ date: 2020-09-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler