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 +4 -4
- data/README.md +2 -2
- data/lib/manufacturable.rb +14 -6
- data/lib/manufacturable/builder.rb +16 -12
- data/lib/manufacturable/factory.rb +5 -1
- data/lib/manufacturable/item.rb +24 -9
- data/lib/manufacturable/registrar.rb +4 -0
- data/lib/manufacturable/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 89a955dbe25bfe0a0409045c03e9349d06c4ce710b6cb3a2bf0cbe95ea2c088b
|
4
|
+
data.tar.gz: efbc6e1f0f512d7306d1b343bd2ff957728ac72e3abddf54b8e6efe0d3446451
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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/
|
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
|
data/lib/manufacturable.rb
CHANGED
@@ -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.
|
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.
|
14
|
-
self.new(*args).
|
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
|
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.
|
28
|
+
Builder.build_all(@type, key, *args)
|
25
29
|
end
|
26
30
|
end
|
27
31
|
end
|
data/lib/manufacturable/item.rb
CHANGED
@@ -2,17 +2,32 @@ require 'manufacturable/registrar'
|
|
2
2
|
|
3
3
|
module Manufacturable
|
4
4
|
module Item
|
5
|
-
def
|
6
|
-
|
7
|
-
|
8
|
-
|
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
|
-
|
11
|
-
|
12
|
-
|
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
|
-
|
15
|
-
|
28
|
+
base.class_eval do
|
29
|
+
attr_reader :manufacturable_item_key
|
30
|
+
end
|
16
31
|
end
|
17
32
|
end
|
18
33
|
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.
|
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-
|
12
|
+
date: 2020-09-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|