manufacturable 1.3.0 → 1.4.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: 3e52a6378b01e5f4337fd48b88d9dbf8cca741bd469ff4d4135274db6118f7c3
4
- data.tar.gz: 6f4db9cb13e34060441f96351dfcfca387fa8aabae90bbcd19200afd3300240a
3
+ metadata.gz: dbdb8a719fcf23191bd800e45a570430be3dbf5a0dce71474b44ca44cc8355a6
4
+ data.tar.gz: 9102df38b83cdf17ba32f5c277d08779bf13cfb7bddebe829859d2efe490e8bd
5
5
  SHA512:
6
- metadata.gz: f754959bbd895ffae026bebc8715f29461cff515d6950149ed2309de7a87f52fff07c63920fbc1abefa4e4519bb7c7ba212973d7bfb0bfaa34cace34958d1a45
7
- data.tar.gz: 44b7e429302b227f6bd0c058bfbce2d9d13e9459b48a6e5d0b80f5d366b577f56dbd6226262ae31f7dfc5644d07ce3fd3879daa4d4b0d3ac20fb37fbfb395d09
6
+ metadata.gz: f10dff173251339d53a12f00e2aab39fcd299386f7f6adf31c6d186ecdd6ff58c4115ea0e98cea8686da611f045fd682aa4ac102848dadecca6d1c6d7d662b7b
7
+ data.tar.gz: 2bab5827067a63715f43acd712e46208d2be51bd2a6e4c6cc3167d52afb131659cc0afeae9751b95639e6fc7ed0e23a90a0e07aa986dfc63d3b78d8913eb197a
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
@@ -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)
@@ -1,3 +1,3 @@
1
1
  module Manufacturable
2
- VERSION = "1.3.0"
2
+ VERSION = "1.4.2"
3
3
  end
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
  }
20
20
 
21
21
  spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
22
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
22
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|assets)/}) }
23
23
  end
24
24
 
25
25
  spec.bindir = "exe"
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.3.0
4
+ version: 1.4.2
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-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -101,7 +101,6 @@ files:
101
101
  - LICENSE.txt
102
102
  - README.md
103
103
  - Rakefile
104
- - assets/factory.png
105
104
  - bin/console
106
105
  - bin/setup
107
106
  - lib/manufacturable.rb
Binary file