manufacturable 1.3.2 → 1.4.0

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