manufacturable 1.1.0 → 1.4.0

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: 856e222a76811ce7b2364c48ed3d745781286a420e33ae3ea76916970b66b110
4
- data.tar.gz: ebd0b6cdd375008078807c398835e31cb4b68a31eedd491665d7cae486431995
3
+ metadata.gz: 89a955dbe25bfe0a0409045c03e9349d06c4ce710b6cb3a2bf0cbe95ea2c088b
4
+ data.tar.gz: efbc6e1f0f512d7306d1b343bd2ff957728ac72e3abddf54b8e6efe0d3446451
5
5
  SHA512:
6
- metadata.gz: 663381ef9ab7abad64a7863cf15ba7a4e5f028cb01c0cb758ee91ce6e326cd7654135956e0750f6f84e785ab161db84f701649553b4b59e7247d529ccca695eb
7
- data.tar.gz: 68c778221748374c79facccdf02ab609918c5f0fd0d39035fb7ca57ef389c4eaa22394d6f1d718d4884e8ea91916a293c27aac97a5c05c2d3b7fca6e368ff0e0
6
+ metadata.gz: 3fd2846ae381bea9934e498c15e202e1d6b72e17bbdbea22d2742a214772edbaa71c02e1f2364dd5e2c88d06e5a7017ce734dde10676a1297206d2a7310378dc
7
+ data.tar.gz: e909d7f0234635b01fec866a020e61b5815276024aad25b0a22e96dfbb1dfe7bb80c89d68ce44ff400b61d525bf8fe640a894d535d373166b5ae102902420ffd
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,16 +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_many(*args)
17
+ def self.build_many(*args, **kwargs)
18
+ Builder.build_all(*args, **kwargs)
19
+ end
20
+
21
+ def self.build_all(*args, **kwargs)
22
+ Builder.build_all(*args, **kwargs)
19
23
  end
20
24
 
21
25
  def self.registered_types
@@ -26,6 +30,10 @@ module Manufacturable
26
30
  Registrar.registered_keys(type)
27
31
  end
28
32
 
33
+ def self.reset!
34
+ Registrar.reset!
35
+ end
36
+
29
37
  def self.config
30
38
  yield(Config)
31
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_many(*args)
14
- self.new(*args).build_many
13
+ def self.build_all(*args, **kwargs)
14
+ self.new(*args, **kwargs).build_all
15
15
  end
16
16
 
17
17
  def build
@@ -22,16 +22,16 @@ module Manufacturable
22
22
  last_instance
23
23
  end
24
24
 
25
- def build_many
25
+ def build_all
26
26
  instances
27
27
  end
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
@@ -19,9 +19,13 @@ module Manufacturable
19
19
  end
20
20
 
21
21
  def build_many(key, *args)
22
+ build_all(key, *args)
23
+ end
24
+
25
+ def build_all(key, *args)
22
26
  return [] if @type.nil?
23
27
 
24
- Builder.build_many(@type, key, *args)
28
+ Builder.build_all(@type, key, *args)
25
29
  end
26
30
  end
27
31
  end
@@ -2,17 +2,32 @@ require 'manufacturable/registrar'
2
2
 
3
3
  module Manufacturable
4
4
  module Item
5
- def corresponds_to(key, type = self.superclass)
6
- key = key == type ? Registrar::ALL_KEY : key
7
- Registrar.register(type, key, self)
8
- end
5
+ def self.extended(base)
6
+ base.instance_eval do
7
+ def corresponds_to(key, type = self.superclass)
8
+ key = key == type ? Registrar::ALL_KEY : key
9
+ Registrar.register(type, key, self)
10
+ end
9
11
 
10
- def corresponds_to_all(type = self.superclass)
11
- corresponds_to(Registrar::ALL_KEY, type)
12
- end
12
+ def corresponds_to_all(type = self.superclass)
13
+ corresponds_to(Registrar::ALL_KEY, type)
14
+ end
15
+
16
+ def default_manufacturable(type = self.superclass)
17
+ corresponds_to(Registrar::DEFAULT_KEY, type)
18
+ end
19
+
20
+ def new(*args, **kwargs, &block)
21
+ key = kwargs.delete(:manufacturable_item_key)
22
+ instance = kwargs.empty? ? super(*args, &block) : super
23
+ instance.instance_variable_set(:@manufacturable_item_key, key)
24
+ instance
25
+ end
26
+ end
13
27
 
14
- def default_manufacturable(type = self.superclass)
15
- corresponds_to(Registrar::DEFAULT_KEY, type)
28
+ base.class_eval do
29
+ attr_reader :manufacturable_item_key
30
+ end
16
31
  end
17
32
  end
18
33
  end
@@ -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.1.0"
2
+ VERSION = "1.4.0"
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.1.0
4
+ version: 1.4.0
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