manufacturable 1.2.0 → 1.4.1

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