providers 0.3.1 → 0.4.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: ae45a99a137a22b85a607817e9a75b18de4ec52dcce7e6655da647ebc7d6c47d
4
- data.tar.gz: 451913f8ad2f29c3412a82c215dabe79ffe1be35c8b82c7a8057496bdfc04512
3
+ metadata.gz: ae6e1bb3fca5b395d2e28d8e4844dbdbb84817cff3d5cd38a6f144d1318ef9b0
4
+ data.tar.gz: 6f00911d21891db4a2c4bdaf9186b9cfe9b2b045f4fe5e308f5381b6572f22e9
5
5
  SHA512:
6
- metadata.gz: 98903d9d7bf948baba13e56f28499ff80e37f0c292be508c495e273f846d1810d369469562bebee89c26532e7bb569db1bd457a119c33b8ee3f845633da23a4d
7
- data.tar.gz: 0650357e620e054d1606854f5b272331a21ecbf8dc91b1a5b324547d9213434e28a32ec48197f6b0b3aee830a46acdb13a3d48a6049ab9bd420513375b94019e
6
+ metadata.gz: 8c7122adaae197ea905c768a892cc8a2f71296b403b4d7d6b2061c90ca8e9d92da13dbddc124483563be12264dd91a5b314495184326fea8072113c50ae36061
7
+ data.tar.gz: 1fd20a67479d3b196f96ec1ac068874573f0ff83ca7c931d872ea161dfe3b18233d0bd8ec7d797f607176ef59a4717b88f3c172970ec5baee993237de86c071f
@@ -2,9 +2,8 @@
2
2
 
3
3
  require 'expressions'
4
4
 
5
- module Low
5
+ module Dependencies
6
6
  # A Dependency Expression requires LowType in order to be injected via a constructor.
7
- # See "Dependencies[:dependency]" for traditional dependency injection without LowType.
8
7
  class Dependency < ::Expressions::Expression
9
8
  attr_reader :provider_key, :var_name
10
9
 
@@ -24,14 +23,14 @@ module Low
24
23
  Providers[@provider_key]
25
24
  end
26
25
 
27
- # Ignore LowType's validation of arguments of type Dependency.
26
+ # Ignore LowType's validation on arguments of type Dependency.
28
27
  def validate!(value:, proxy:); end
29
28
 
30
29
  private
31
30
 
32
31
  def union_value(value)
33
32
  @provider_key = value
34
- @var_name = Dependencies.var_name_via_namespace(value)
33
+ @var_name = Dependencies.name_from_namespace(value)
35
34
  end
36
35
  end
37
36
  end
@@ -1,9 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative '../expressions/dependency'
3
+ require_relative '../dependencies/dependency'
4
4
 
5
- module Low
6
- class DependencyFactory
5
+ module Dependencies
6
+ class Factory
7
7
  class << self
8
8
  def parse(dependencies)
9
9
  class_dependencies = []
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Low
4
- class Dependencies
3
+ module Dependencies
4
+ class Repository
5
5
  class << self
6
6
  def stack
7
7
  @stack ||= []
data/lib/dependencies.rb CHANGED
@@ -1,23 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative 'config/config'
4
- require_relative 'expressions/dependency'
5
- require_relative 'factories/dependency_factory'
6
- require_relative 'repositories/dependencies'
4
+ require_relative 'dependencies/dependency'
5
+ require_relative 'dependencies/factory'
6
+ require_relative 'dependencies/repository'
7
7
  require_relative 'providers'
8
8
 
9
- class Dependencies
9
+ module Dependencies
10
10
  class << self
11
- def provide(key, &block)
12
- Low::Dependencies.provide(key:, &block)
13
- end
14
-
15
11
  # Usage: "include Dependencies[:dependency]"
16
12
  def [](*dependencies)
17
- class_dependencies = Low::DependencyFactory.parse([*dependencies])
13
+ class_dependencies = Factory.parse([*dependencies])
18
14
 
19
15
  # "include" doesn't know the class that did the include, however "included" happens immediately after.
20
- Low::Dependencies.push(class_dependencies:)
16
+ Repository.push(class_dependencies:)
21
17
 
22
18
  included_hook
23
19
  end
@@ -27,23 +23,23 @@ class Dependencies
27
23
  def self.included(klass)
28
24
  klass.class_eval do
29
25
  # "include" doesn't know the class that did the include, however "included" happens immediately after.
30
- @low_dependencies = Low::Dependencies.pop
26
+ @dependencies = Repository.pop
31
27
 
32
28
  class << self
33
- attr_reader :low_dependencies
29
+ attr_reader :dependencies
34
30
  end
35
31
 
36
32
  def initialize
37
- self.class.low_dependencies.each do |dependency|
38
- provider = Low::Providers.find(dependency.provider_key)
39
- raise StandardError, "Provider #{dependency.provider_key} not found" if provider.nil?
33
+ self.class.dependencies.each do |dependency|
34
+ provider = Providers[dependency.provider_key]
35
+ raise StandardError, "Provider #{dependency.provider_key} is missing or returning nil" if provider.nil?
40
36
 
41
- var_name = Providers.var_name_via_namespace(dependency.var_name)
42
- instance_variable_set("@#{var_name}", provider.result)
37
+ var_name = Dependencies.name_from_namespace(dependency.var_name)
38
+ instance_variable_set("@#{var_name}", provider)
43
39
  end
44
40
  end
45
41
 
46
- Providers.define_readers(@low_dependencies, self)
42
+ Dependencies.define_readers(@dependencies, self)
47
43
  end
48
44
  end
49
45
  end
@@ -51,7 +47,7 @@ class Dependencies
51
47
 
52
48
  def define_readers(dependencies, klass)
53
49
  dependencies.each do |dependency|
54
- var_name = var_name_via_namespace(dependency.var_name)
50
+ var_name = name_from_namespace(dependency.var_name)
55
51
 
56
52
  klass.define_method(var_name) do
57
53
  instance_variable_get("@#{var_name}")
@@ -59,7 +55,7 @@ class Dependencies
59
55
  end
60
56
  end
61
57
 
62
- def var_name_via_namespace(namespace)
58
+ def name_from_namespace(namespace)
63
59
  return namespace.split('.').last if namespace.is_a?(String)
64
60
 
65
61
  namespace
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Low
3
+ module Providers
4
4
  class Provider
5
5
  attr_reader :key
6
6
 
data/lib/providers.rb CHANGED
@@ -1,12 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative '../models/provider'
3
+ require_relative 'providers/provider'
4
4
 
5
- class Providers
5
+ module Providers
6
6
  class MissingProviderError < StandardError; end
7
7
 
8
8
  class << self
9
- def provide(key:, &block)
9
+ def define(key, &block)
10
10
  providers[key] = Provider.new(key:, &block)
11
11
  end
12
12
 
@@ -15,10 +15,6 @@ class Providers
15
15
  @providers
16
16
  end
17
17
 
18
- def find(provider_key)
19
- providers[provider_key]
20
- end
21
-
22
18
  # Providers[] are hard to stub in tests and should only be used when dependency injection isn't possible.
23
19
  # TODO: Make Providers[] easy to stub in tests and look into feature where we get providers from another Ecosystem.
24
20
  def [](provider_key)
data/lib/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module Low
4
- DEPENDENCY_VERSION = '0.3.1'
3
+ module Providers
4
+ VERSION = '0.4.0'
5
5
  end
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.3.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - maedi
@@ -33,11 +33,11 @@ extra_rdoc_files: []
33
33
  files:
34
34
  - lib/config/config.rb
35
35
  - lib/dependencies.rb
36
- - lib/expressions/dependency.rb
37
- - lib/factories/dependency_factory.rb
38
- - lib/models/provider.rb
36
+ - lib/dependencies/dependency.rb
37
+ - lib/dependencies/factory.rb
38
+ - lib/dependencies/repository.rb
39
39
  - lib/providers.rb
40
- - lib/repositories/dependencies.rb
40
+ - lib/providers/provider.rb
41
41
  - lib/version.rb
42
42
  homepage: https://github.com/raindeer-rb/providers
43
43
  licenses: []
@@ -58,7 +58,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
58
58
  - !ruby/object:Gem::Version
59
59
  version: '0'
60
60
  requirements: []
61
- rubygems_version: 3.7.2
61
+ rubygems_version: 4.0.6
62
62
  specification_version: 4
63
63
  summary: Dependency Injection in crisp and clear syntax
64
64
  test_files: []