manufacturable 1.3.2 → 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: 91d256244ba5a6999649b8928b291791b1c91b634340e10d72e28c074e0a34f4
4
- data.tar.gz: fff5150a880e1735a4ca555a42ad1065d2ebe3dfb6a1562fa6dd070345eaf225
3
+ metadata.gz: 89a955dbe25bfe0a0409045c03e9349d06c4ce710b6cb3a2bf0cbe95ea2c088b
4
+ data.tar.gz: efbc6e1f0f512d7306d1b343bd2ff957728ac72e3abddf54b8e6efe0d3446451
5
5
  SHA512:
6
- metadata.gz: d60dbbc2b1a367efbdbaab7158cee8b414b3e2ea7cc5e99b26b0d5c53ffa727b1bbef241bbd88db12ddcc575aa60ab8dbc57263d4460352a6ea2683c49cae890
7
- data.tar.gz: 9f388ffce6f28c349b016afd90adee8357ea202897978714920b7c2acaf1052885c9a3eec19a8166ec071c7baae3063174ad61ee9a5c148ad0caf8898097a87a
6
+ metadata.gz: 3fd2846ae381bea9934e498c15e202e1d6b72e17bbdbea22d2742a214772edbaa71c02e1f2364dd5e2c88d06e5a7017ce734dde10676a1297206d2a7310378dc
7
+ data.tar.gz: e909d7f0234635b01fec866a020e61b5815276024aad25b0a22e96dfbb1dfe7bb80c89d68ce44ff400b61d525bf8fe640a894d535d373166b5ae102902420ffd
@@ -39,7 +39,7 @@ module Manufacturable
39
39
  end
40
40
 
41
41
  def instances
42
- @instances ||= klasses.map { |klass| klass&.new(*args, **kwargs) }
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, **kwargs)
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,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
@@ -1,3 +1,3 @@
1
1
  module Manufacturable
2
- VERSION = "1.3.2"
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.3.2
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-08-29 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