manufacturable 1.4.2 → 2.0.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: dbdb8a719fcf23191bd800e45a570430be3dbf5a0dce71474b44ca44cc8355a6
4
- data.tar.gz: 9102df38b83cdf17ba32f5c277d08779bf13cfb7bddebe829859d2efe490e8bd
3
+ metadata.gz: 6592918ec7c5048cac69e110ebd09e5845fc59ebc5153d4fd6f289f3613e9b05
4
+ data.tar.gz: 2ab88ebebdae5afbc65d1b1513a36a45a94ae5712b7fe94229d7430201719bfd
5
5
  SHA512:
6
- metadata.gz: f10dff173251339d53a12f00e2aab39fcd299386f7f6adf31c6d186ecdd6ff58c4115ea0e98cea8686da611f045fd682aa4ac102848dadecca6d1c6d7d662b7b
7
- data.tar.gz: 2bab5827067a63715f43acd712e46208d2be51bd2a6e4c6cc3167d52afb131659cc0afeae9751b95639e6fc7ed0e23a90a0e07aa986dfc63d3b78d8913eb197a
6
+ metadata.gz: cba737b5b3b0bceea6096f4cf9cd4e776fabb261432d20efa798f63cfa1d6fe58a0e221e17679dd13f14babafc7b974bcf91a05ad85ab3bee1dcb9d2d3f4bde6
7
+ data.tar.gz: 594665a88f75ffdc145dfaefe5e528247da47567e8ec6bc7cb650a4931396530c5a595f427a68bdfb3acce912890e31db95d8243ce8a45eaeb841d414d2a8d6b
@@ -2,16 +2,20 @@ require 'manufacturable/registrar'
2
2
 
3
3
  module Manufacturable
4
4
  class Builder
5
- def self.build(*args, **kwargs)
6
- self.new(*args, **kwargs).build
5
+ def self.build(*args, **kwargs, &block)
6
+ self.new(*args, **kwargs, &block).build
7
7
  end
8
8
 
9
- def self.build_one(*args, **kwargs)
10
- self.new(*args, **kwargs).build_one
9
+ def self.build_one(*args, **kwargs, &block)
10
+ self.new(*args, **kwargs, &block).build_one
11
11
  end
12
12
 
13
- def self.build_all(*args, **kwargs)
14
- self.new(*args, **kwargs).build_all
13
+ def self.build_all(*args, **kwargs, &block)
14
+ self.new(*args, **kwargs, &block).build_all
15
+ end
16
+
17
+ def self.builds?(*args, **kwargs, &block)
18
+ self.new(*args, **kwargs, &block).builds?
15
19
  end
16
20
 
17
21
  def build
@@ -26,12 +30,17 @@ module Manufacturable
26
30
  instances
27
31
  end
28
32
 
33
+ def builds?
34
+ Registrar.registered_keys(type).include?(key)
35
+ end
36
+
29
37
  private
30
38
 
31
- attr_reader :type, :key, :args, :kwargs
39
+ attr_reader :type, :key, :args, :kwargs, :block
32
40
 
33
- def initialize(type, key, *args, **kwargs)
34
- @type, @key, @args, @kwargs = type, key, args, kwargs
41
+ def initialize(*args, **kwargs, &block)
42
+ @type, @key, *@args = args
43
+ @kwargs, @block = kwargs, block
35
44
  end
36
45
 
37
46
  def return_first?
@@ -39,15 +48,17 @@ module Manufacturable
39
48
  end
40
49
 
41
50
  def instances
42
- @instances ||= klasses.map { |klass| klass&.new(*args, **kwargs_with_key) }
51
+ @instances ||= klasses.map do |klass|
52
+ klass.new(*args, **kwargs_with_key).tap { |instance| block&.call(instance) }
53
+ end
43
54
  end
44
55
 
45
- def klasses
46
- Registrar.get(type, key)
56
+ def last_instance
57
+ last_klass&.new(*args, **kwargs_with_key)&.tap { |instance| block&.call(instance) }
47
58
  end
48
59
 
49
- def last_instance
50
- last_klass&.new(*args, **kwargs_with_key)
60
+ def klasses
61
+ Registrar.get(type, key).to_a
51
62
  end
52
63
 
53
64
  def kwargs_with_key
@@ -55,7 +66,7 @@ module Manufacturable
55
66
  end
56
67
 
57
68
  def last_klass
58
- klasses.to_a.last
69
+ klasses.last
59
70
  end
60
71
  end
61
72
  end
@@ -27,5 +27,9 @@ module Manufacturable
27
27
 
28
28
  Builder.build_all(@type, key, *args)
29
29
  end
30
+
31
+ def builds?(key)
32
+ Builder.builds?(@type, key)
33
+ end
30
34
  end
31
35
  end
@@ -2,19 +2,11 @@ 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
5
+ def new(*args, **kwargs, &block)
6
+ key = kwargs.delete(:manufacturable_item_key)
7
+ instance = kwargs.empty? ? super(*args, &block) : super
8
+ instance.instance_variable_set(:@manufacturable_item_key, key)
9
+ instance
18
10
  end
19
11
 
20
12
  def corresponds_to(key, type = self.superclass)
@@ -29,5 +21,13 @@ module Manufacturable
29
21
  def default_manufacturable(type = self.superclass)
30
22
  corresponds_to(Registrar::DEFAULT_KEY, type)
31
23
  end
24
+
25
+ def self.extended(base)
26
+ base.include(InstanceMethods)
27
+ end
28
+
29
+ module InstanceMethods
30
+ attr_reader :manufacturable_item_key
31
+ end
32
32
  end
33
33
  end
@@ -1,9 +1,21 @@
1
1
  require 'manufacturable/config'
2
2
 
3
3
  module Manufacturable
4
- class Railtie < Rails::Railtie
5
- initializer "manufacturable.require_paths" do |app|
6
- Manufacturable::Config.require_method = app.config.eager_load ? :require : :require_dependency
4
+ class Railtie
5
+ def self.load
6
+ load_railtie if rails_defined?
7
+ end
8
+
9
+ def self.load_railtie
10
+ Class.new(Rails::Railtie).initializer('manufacturable.require_paths') do |app|
11
+ Manufacturable::Config.require_method = app.config.eager_load ? :require : :require_dependency
12
+ end
13
+ end
14
+
15
+ def self.rails_defined?
16
+ defined?(Rails)
7
17
  end
8
18
  end
9
19
  end
20
+
21
+ Manufacturable::Railtie.load
@@ -1,3 +1,5 @@
1
+ require 'set'
2
+
1
3
  module Manufacturable
2
4
  class Registrar
3
5
  ALL_KEY = :__all__
@@ -1,3 +1,3 @@
1
1
  module Manufacturable
2
- VERSION = "1.4.2"
2
+ VERSION = "2.0.0"
3
3
  end
@@ -3,31 +3,27 @@ require 'manufacturable/config'
3
3
  require 'manufacturable/factory'
4
4
  require 'manufacturable/item'
5
5
  require 'manufacturable/object_factory'
6
- require 'manufacturable/railtie' if defined?(Rails)
6
+ require 'manufacturable/railtie'
7
7
 
8
8
  module Manufacturable
9
- def self.build(*args, **kwargs)
10
- Builder.build(*args, **kwargs)
9
+ def self.build(*args, **kwargs, &block)
10
+ Builder.build(*args, **kwargs, &block)
11
11
  end
12
12
 
13
- def self.build_one(*args, **kwargs)
14
- Builder.build_one(*args, **kwargs)
13
+ def self.build_one(*args, **kwargs, &block)
14
+ Builder.build_one(*args, **kwargs, &block)
15
15
  end
16
16
 
17
- def self.build_many(*args, **kwargs)
18
- Builder.build_all(*args, **kwargs)
17
+ def self.build_many(*args, **kwargs, &block)
18
+ Builder.build_all(*args, **kwargs, &block)
19
19
  end
20
20
 
21
- def self.build_all(*args, **kwargs)
22
- Builder.build_all(*args, **kwargs)
21
+ def self.build_all(*args, **kwargs, &block)
22
+ Builder.build_all(*args, **kwargs, &block)
23
23
  end
24
24
 
25
- def self.registered_types
26
- Registrar.registered_types
27
- end
28
-
29
- def self.registered_keys(type)
30
- Registrar.registered_keys(type)
25
+ def self.builds?(type, key)
26
+ Builder.builds?(type, key)
31
27
  end
32
28
 
33
29
  def self.reset!
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: manufacturable
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.2
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alan Ridlehoover
8
8
  - Fito von Zastrow
9
- autorequire:
9
+ autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2020-09-17 00:00:00.000000000 Z
12
+ date: 2021-09-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -120,7 +120,7 @@ metadata:
120
120
  bug_tracker_uri: https://github.com/first-try-software/manufacturable/issues
121
121
  homepage_uri: https://github.com/first-try-software/manufacturable
122
122
  source_code_uri: https://github.com/first-try-software/manufacturable
123
- post_install_message:
123
+ post_install_message:
124
124
  rdoc_options: []
125
125
  require_paths:
126
126
  - lib
@@ -135,8 +135,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
135
135
  - !ruby/object:Gem::Version
136
136
  version: '0'
137
137
  requirements: []
138
- rubygems_version: 3.1.2
139
- signing_key:
138
+ rubygems_version: 3.2.15
139
+ signing_key:
140
140
  specification_version: 4
141
141
  summary: Manufacturable is a factory that builds self-registering objects.
142
142
  test_files: []