providers 0.4.0 → 0.6.1
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 +4 -4
- data/lib/dependencies/factory.rb +2 -2
- data/lib/dependencies.rb +2 -7
- data/lib/{dependencies → low}/dependency.rb +4 -3
- data/lib/providers.rb +28 -7
- data/lib/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9ceb15bee535ec5e0935537502a99b985e2c1562021a389e7a44bf9d7b36d72c
|
|
4
|
+
data.tar.gz: 91816b9dd7e12215b5d72462078d7244bd3ed9faaef8011da526570b2770270c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c4423a7d88645d178761c0180ddc3b75b3d4f2f15c28d5c2a512c226b896c229b0eade4e6d5c64a66fd21849c61e792c4e4d0236dfa5a7db35513782c797c42f
|
|
7
|
+
data.tar.gz: e1874197801ffef062700b17263abad5441d9b3bdfdea0487fa4789e5a7f5d1de1dc3a9931b1b2ea2612a13f3988ea0b8cd14f0e80387e6014c3ea6cd51c58af
|
data/lib/dependencies/factory.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require_relative '../
|
|
3
|
+
require_relative '../low/dependency'
|
|
4
4
|
|
|
5
5
|
module Dependencies
|
|
6
6
|
class Factory
|
|
@@ -17,7 +17,7 @@ module Dependencies
|
|
|
17
17
|
provider_key = dependency
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
-
class_dependencies << (Dependency.new(var_name: dependency) | provider_key)
|
|
20
|
+
class_dependencies << (::Low::Dependency.new(var_name: dependency) | provider_key)
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
class_dependencies
|
data/lib/dependencies.rb
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require_relative 'config/config'
|
|
4
|
-
require_relative 'dependencies/dependency'
|
|
5
4
|
require_relative 'dependencies/factory'
|
|
6
5
|
require_relative 'dependencies/repository'
|
|
7
6
|
require_relative 'providers'
|
|
@@ -46,12 +45,8 @@ module Dependencies
|
|
|
46
45
|
end
|
|
47
46
|
|
|
48
47
|
def define_readers(dependencies, klass)
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
klass.define_method(var_name) do
|
|
53
|
-
instance_variable_get("@#{var_name}")
|
|
54
|
-
end
|
|
48
|
+
klass.class_eval do
|
|
49
|
+
attr_reader(*dependencies.map { |d| Dependencies.name_from_namespace(d.var_name).to_sym })
|
|
55
50
|
end
|
|
56
51
|
end
|
|
57
52
|
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
require 'expressions'
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
# Used within LowType's namespace.
|
|
6
|
+
module Low
|
|
7
|
+
# Placed as a default value in a constructor param.
|
|
7
8
|
class Dependency < ::Expressions::Expression
|
|
8
9
|
attr_reader :provider_key, :var_name
|
|
9
10
|
|
|
@@ -23,7 +24,7 @@ module Dependencies
|
|
|
23
24
|
Providers[@provider_key]
|
|
24
25
|
end
|
|
25
26
|
|
|
26
|
-
# Ignore LowType's validation on arguments of type
|
|
27
|
+
# Ignore LowType's validation on arguments of this type.
|
|
27
28
|
def validate!(value:, proxy:); end
|
|
28
29
|
|
|
29
30
|
private
|
data/lib/providers.rb
CHANGED
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require_relative 'low/dependency'
|
|
3
4
|
require_relative 'providers/provider'
|
|
5
|
+
require_relative 'dependencies'
|
|
4
6
|
|
|
5
7
|
module Providers
|
|
6
8
|
class MissingProviderError < StandardError; end
|
|
7
9
|
|
|
8
10
|
class << self
|
|
9
|
-
def define(key, &block)
|
|
10
|
-
|
|
11
|
+
def define(key, eager: false, receiver: self, &block)
|
|
12
|
+
provider = Provider.new(key:, &block)
|
|
13
|
+
provider.result if eager
|
|
14
|
+
providers[key] = provider
|
|
11
15
|
end
|
|
12
16
|
|
|
13
17
|
def providers
|
|
@@ -17,11 +21,18 @@ module Providers
|
|
|
17
21
|
|
|
18
22
|
# Providers[] are hard to stub in tests and should only be used when dependency injection isn't possible.
|
|
19
23
|
# TODO: Make Providers[] easy to stub in tests and look into feature where we get providers from another Ecosystem.
|
|
20
|
-
def [](
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
def [](*provider_keys)
|
|
25
|
+
provider_keys = [*provider_keys]
|
|
26
|
+
|
|
27
|
+
raise(MissingProviderError, 'Pass one more provider keys') if provider_keys.empty?
|
|
28
|
+
|
|
29
|
+
if provider_keys.count == 1
|
|
30
|
+
result(provider_keys.first)
|
|
31
|
+
else
|
|
32
|
+
provider_keys.map do |provider_key|
|
|
33
|
+
result(provider_key)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
25
36
|
end
|
|
26
37
|
|
|
27
38
|
def all
|
|
@@ -31,5 +42,15 @@ module Providers
|
|
|
31
42
|
def clear
|
|
32
43
|
@providers = {}
|
|
33
44
|
end
|
|
45
|
+
|
|
46
|
+
private
|
|
47
|
+
|
|
48
|
+
def result(provider_key)
|
|
49
|
+
provider = providers[provider_key]
|
|
50
|
+
|
|
51
|
+
raise(MissingProviderError, "Provider #{provider_key.inspect} not found") if provider.nil?
|
|
52
|
+
|
|
53
|
+
provider.result
|
|
54
|
+
end
|
|
34
55
|
end
|
|
35
56
|
end
|
data/lib/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: providers
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.6.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- maedi
|
|
@@ -33,9 +33,9 @@ extra_rdoc_files: []
|
|
|
33
33
|
files:
|
|
34
34
|
- lib/config/config.rb
|
|
35
35
|
- lib/dependencies.rb
|
|
36
|
-
- lib/dependencies/dependency.rb
|
|
37
36
|
- lib/dependencies/factory.rb
|
|
38
37
|
- lib/dependencies/repository.rb
|
|
38
|
+
- lib/low/dependency.rb
|
|
39
39
|
- lib/providers.rb
|
|
40
40
|
- lib/providers/provider.rb
|
|
41
41
|
- lib/version.rb
|