smart_ioc 0.5.1 → 0.5.2

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: 5e5c21e82ade291e0f2349e6d75807764104472899d1369275b8e43be1184f82
4
- data.tar.gz: 233217c7f8049bfaf40359cc599fc6f944f4a8e773da8a2b2c6059224dd283e4
3
+ metadata.gz: f7dac45d6133624620331b4bbc980e7e19574881e51b4c98b2558d7b5114c584
4
+ data.tar.gz: a7753416faca728d5f72e2d8d215b3f77ef7de7eeb54f58601bf97d3b2d92f5d
5
5
  SHA512:
6
- metadata.gz: 49f4a74095dc772d17f3e5f2b9f749465c6b58f9fbb60309f1a4a772ecdcd4211200879f4ca7bc169e3b40c5695519273b7b729bfab4683f1f96d920fe41e505
7
- data.tar.gz: 3aafd25fb01683303a404692d92cf8becc533c1840ba1672eaac6329e0360a59bf44d1820eaab0517ef8c1f1326160f0e2ec000efb1b9933f48de8945ccf8eed
6
+ metadata.gz: ca530b375da6e1467d9d6ac60e7c84e3be955a8c1922bd4b4a2a24d53057ba3cb707ffe87a7bbaf0e897749b4825cdf138312df8fc24441a921c41cf60f8824d
7
+ data.tar.gz: ca838c6018069eead30c652c05f74a2c0f345429b87845e70c9f9d5cfb1d98021cb96f93417605ac2171ac99ee6ecf31dd12341f7fa85becdb201dcf5940e367
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- smart_ioc (0.5.1)
4
+ smart_ioc (0.5.2)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -2,11 +2,11 @@ class SmartIoC::BeanDefinitionsStorage
2
2
  include SmartIoC::Errors
3
3
 
4
4
  def initialize
5
- @collection = []
5
+ @collection = Hash.new { |h, k| h[k] = [] }
6
6
  end
7
7
 
8
8
  def clear_dependencies
9
- @collection.each do |bd|
9
+ @collection.values.flatten.each do |bd|
10
10
  bd.dependencies.each do |dependency|
11
11
  dependency.bean_definition = nil
12
12
  end
@@ -15,12 +15,12 @@ class SmartIoC::BeanDefinitionsStorage
15
15
 
16
16
  # @param bean_definition [BeanDefinition]
17
17
  def push(bean_definition)
18
- existing_bd = @collection.detect do |bd|
19
- bd == bean_definition
20
- end
18
+ bd_scope = @collection[bean_definition.name]
19
+
20
+ existing_bd = bd_scope.detect { |bd| bd == bean_definition }
21
21
 
22
22
  if existing_bd
23
- @collection.reject! { |bd| bd == existing_bd }
23
+ bd_scope.reject! { |bd| bd == bean_definition }
24
24
 
25
25
  message = <<~EOF
26
26
  \nReplacing bean definition...
@@ -34,16 +34,15 @@ class SmartIoC::BeanDefinitionsStorage
34
34
  puts message
35
35
  end
36
36
 
37
- @collection.push(bean_definition)
37
+ bd_scope.push(bean_definition)
38
38
  end
39
39
 
40
- def delete_by_class(klass)
41
- klass_str = klass.to_s
42
- bean = @collection.detect {|bd| bd.klass.to_s == klass_str}
40
+ def delete(bean_definition)
41
+ bd_scope = @collection[bean_definition.name]
43
42
 
44
- if bean
45
- @collection.delete(bean)
46
- end
43
+ bd_scope.delete_if { |bd| bd.klass.to_s == bean_definition.klass.to_s }
44
+
45
+ nil
47
46
  end
48
47
 
49
48
  # Returns bean definition for specific class
@@ -52,27 +51,23 @@ class SmartIoC::BeanDefinitionsStorage
52
51
  # @param context [Symbol]
53
52
  # @return bean definition [BeanDefinition] or nil
54
53
  def find_bean(bean_name, package, context)
55
- @collection.detect {|bd| bd.name == bean_name && bd.package == package && bd.context == context}
54
+ @collection[bean_name].detect do |bd|
55
+ bd.name == bean_name && bd.package == package && bd.context == context
56
+ end
56
57
  end
57
58
 
58
59
  def filter_by(bean_name, package = nil, context = nil)
59
- bean_definitions = @collection.select do |bd|
60
- bd.name == bean_name
61
- end
60
+ bd_scope = @collection[bean_name]
62
61
 
63
62
  if package
64
- bean_definitions = bean_definitions.select do |bd|
65
- bd.package == package
66
- end
63
+ bd_scope = bd_scope.select { |bd| bd.package == package }
67
64
  end
68
65
 
69
66
  if context
70
- bean_definitions = bean_definitions.select do |bd|
71
- bd.context == context
72
- end
67
+ bd_scope = bean_definitions.select { |bd| bd.context == context }
73
68
  end
74
69
 
75
- bean_definitions
70
+ bd_scope
76
71
  end
77
72
 
78
73
  # @bean_name [Symbol] bean name
@@ -106,26 +101,18 @@ class SmartIoC::BeanDefinitionsStorage
106
101
  # @package [Symbol, nil] package name
107
102
  # @context [Symbol, nil] context
108
103
  def filter_by_with_drop_to_default_context(bean_name, package = nil, context = nil)
109
- bean_definitions = @collection.select do |bd|
110
- bd.name == bean_name
111
- end
104
+ bd_scope = @collection[bean_name]
112
105
 
113
106
  if package
114
- bean_definitions = bean_definitions.select do |bd|
115
- bd.package == package
116
- end
107
+ bd_scope = bd_scope.select { |bd| bd.package == package }
117
108
  end
118
109
 
119
110
  if context
120
- context_bean_definitions = bean_definitions.select do |bd|
121
- bd.context == context
122
- end
111
+ context_bean_definitions = bd_scope.select { |bd| bd.context == context }
123
112
 
124
- if !context_bean_definitions.empty?
125
- bean_definitions = context_bean_definitions
126
- end
113
+ bd_scope = context_bean_definitions if context_bean_definitions.any?
127
114
  end
128
115
 
129
- bean_definitions
116
+ bd_scope
130
117
  end
131
118
  end
@@ -19,10 +19,10 @@ module SmartIoC
19
19
  raise ArgumentError, "SmartIoC::Container should not be allocated. Use SmartIoC::Container.get_instance instead"
20
20
  end
21
21
 
22
- # @param klass [Class] bean class name
22
+ # @param klass [BeanDefinition] bean class name
23
23
  # @return nil
24
- def unregister_bean(klass)
25
- bean_definitions_storage.delete_by_class(klass)
24
+ def unregister_bean(bean_definition)
25
+ bean_definitions_storage.delete(bean_definition)
26
26
  clear_scopes
27
27
  nil
28
28
  end
@@ -74,9 +74,8 @@ module SmartIoC::Iocify
74
74
  if bean_definition.path == file_path
75
75
  # seems that file with bean definition was reloaded
76
76
  # lets clear all scopes so we do not have
77
- container = SmartIoC::Container.get_instance
78
- container.unregister_bean(self)
79
- container.force_clear_scopes
77
+ SmartIoC::Container.get_instance.unregister_bean(bean_definition)
78
+ SmartIoC::Container.get_instance.force_clear_scopes
80
79
  else
81
80
  raise ArgumentError, "bean with for class #{self.to_s} was already defined in #{bean_definition.path}"
82
81
  end
@@ -1,3 +1,3 @@
1
1
  module SmartIoC
2
- VERSION = "0.5.1"
2
+ VERSION = "0.5.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smart_ioc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ruslan Gatiyatov