corindon 0.7.2 → 0.8.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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1dd263e6d3149f438f50e22fe7575fec7fcfc6d5f8755c77cd83877e5e89c0de
|
4
|
+
data.tar.gz: a33cc4b33c681d3027238dac77f1400e7a611b7502f0504aa5e8b6db2d28ac0a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 13d607a74528b870f3d064a94b6913a4a76ea69ce5d4463ce6f0c41dd65c97c115d9aaeb07c05dc6f874910619dc8354c2670084cf71747e2330b34be46be145
|
7
|
+
data.tar.gz: 1c63ab07e90abbec9c23b04c7c6a097e39dbf23b2faf4f9cecaabb27006f0ee52aec72ee03c477157480931d9cfab95979357890bcc273de62f08bffbb02eaec
|
data/corindon.gemspec
CHANGED
@@ -20,6 +20,7 @@ Gem::Specification.new do |s|
|
|
20
20
|
|
21
21
|
s.add_development_dependency 'bundler'
|
22
22
|
s.add_development_dependency 'minitest', '~> 5.14'
|
23
|
+
s.add_development_dependency 'minitest-reporters', '~> 1.4'
|
23
24
|
s.add_development_dependency 'rake', '~> 13.0'
|
24
25
|
s.add_development_dependency 'rubocop', '1.3.1'
|
25
26
|
end
|
@@ -8,7 +8,8 @@ module Corindon
|
|
8
8
|
attr_reader :injector
|
9
9
|
|
10
10
|
# @param [Array<Definition>] definitions
|
11
|
-
|
11
|
+
# @param [ParameterBag] parameters
|
12
|
+
def initialize(definitions: [], parameters: ParameterBag.new, service_built_listeners: [])
|
12
13
|
@services = {}
|
13
14
|
@definitions = {}
|
14
15
|
@parameters = parameters
|
@@ -25,7 +26,7 @@ module Corindon
|
|
25
26
|
def dup
|
26
27
|
Container.new(
|
27
28
|
definitions: definitions.values,
|
28
|
-
parameters: parameters.dup,
|
29
|
+
parameters: ParameterBag.new(parameters.bag.dup),
|
29
30
|
service_built_listeners: service_built_listeners
|
30
31
|
)
|
31
32
|
end
|
@@ -105,22 +106,22 @@ module Corindon
|
|
105
106
|
end
|
106
107
|
end
|
107
108
|
|
108
|
-
# @param [Class,
|
109
|
+
# @param [Class, String, Token::ParameterToken] key
|
109
110
|
# @param [Object] value
|
110
|
-
def set_parameter(
|
111
|
-
parameters
|
111
|
+
def set_parameter(key, value)
|
112
|
+
parameters.set(key, value)
|
112
113
|
end
|
113
114
|
|
114
|
-
# @param [Class,
|
115
|
+
# @param [Class, String, Token::ParameterToken] key
|
115
116
|
# @return [Boolean]
|
116
117
|
def parameter?(key)
|
117
|
-
parameters.
|
118
|
+
parameters.has?(key)
|
118
119
|
end
|
119
120
|
|
120
|
-
# @param [Class,
|
121
|
+
# @param [Class, String, Token::ParameterToken] key
|
121
122
|
# @return [Object]
|
122
123
|
def parameter(key)
|
123
|
-
parameters.
|
124
|
+
parameters.get(key)
|
124
125
|
end
|
125
126
|
|
126
127
|
# @param [Proc{Object, Container}] listener
|
@@ -132,6 +133,7 @@ module Corindon
|
|
132
133
|
|
133
134
|
# @return [Hash{String=>Definition}]
|
134
135
|
attr_reader :definitions
|
136
|
+
# @return [ParameterBag]
|
135
137
|
attr_reader :parameters
|
136
138
|
attr_reader :services
|
137
139
|
attr_reader :tags
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Corindon
|
4
|
+
module DependencyInjection
|
5
|
+
class ParameterBag
|
6
|
+
# @return [Hash{String => Object}]
|
7
|
+
attr_reader :bag
|
8
|
+
|
9
|
+
# @param [Hash{String => Object}] bag
|
10
|
+
def initialize(bag = {})
|
11
|
+
@bag = bag
|
12
|
+
end
|
13
|
+
|
14
|
+
# @param [Class, String, Token::ParameterToken] key
|
15
|
+
# @return [Boolean]
|
16
|
+
def has?(key)
|
17
|
+
@bag.key?(to_key(key))
|
18
|
+
end
|
19
|
+
|
20
|
+
# @param [Class, String, Token::ParameterToken] key
|
21
|
+
# @return [Object]
|
22
|
+
def get(key)
|
23
|
+
@bag.fetch(to_key(key))
|
24
|
+
end
|
25
|
+
|
26
|
+
# @param [Class, String, Token::ParameterToken] key
|
27
|
+
# @param [Object] value
|
28
|
+
def set(key, value)
|
29
|
+
@bag[to_key(key)] = value
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def to_key(keylike)
|
35
|
+
if keylike.is_a?(Class)
|
36
|
+
keylike.name
|
37
|
+
elsif keylike.is_a?(Token::ParameterToken)
|
38
|
+
keylike.key
|
39
|
+
elsif keylike.is_a?(String)
|
40
|
+
keylike
|
41
|
+
else
|
42
|
+
raise StandardError.new("#{keylike} is not a valid key (objects of class #{keylike.class.name} are not handled.")
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
data/lib/corindon/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: corindon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rémi Piotaix
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-02-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: semantic
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '5.14'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: minitest-reporters
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1.4'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.4'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: rake
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -107,6 +121,7 @@ files:
|
|
107
121
|
- lib/corindon/dependency_injection/dsl.rb
|
108
122
|
- lib/corindon/dependency_injection/injectable.rb
|
109
123
|
- lib/corindon/dependency_injection/injector.rb
|
124
|
+
- lib/corindon/dependency_injection/parameter_bag.rb
|
110
125
|
- lib/corindon/dependency_injection/ruby_compat.rb
|
111
126
|
- lib/corindon/dependency_injection/testing/mock_utils.rb
|
112
127
|
- lib/corindon/dependency_injection/token/injection_token.rb
|