corindon 0.1.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (29) hide show
  1. checksums.yaml +4 -4
  2. data/corindon.gemspec +2 -0
  3. data/lib/corindon/console/application.rb +15 -0
  4. data/lib/corindon/console/base_command.rb +13 -0
  5. data/lib/corindon/console/input.rb +8 -0
  6. data/lib/corindon/console/output.rb +8 -0
  7. data/lib/corindon/dependency_injection/container.rb +127 -0
  8. data/lib/corindon/dependency_injection/definition.rb +63 -0
  9. data/lib/corindon/dependency_injection/dsl.rb +78 -0
  10. data/lib/corindon/dependency_injection/id/id_generator.rb +12 -0
  11. data/lib/corindon/dependency_injection/id/uuid_generator.rb +14 -0
  12. data/lib/corindon/dependency_injection/injectable.rb +25 -0
  13. data/lib/corindon/dependency_injection/injector.rb +28 -0
  14. data/lib/corindon/dependency_injection/token/injection_token.rb +12 -0
  15. data/lib/corindon/dependency_injection/token/parameter_token.rb +22 -0
  16. data/lib/corindon/dependency_injection/token/service_call_token.rb +60 -0
  17. data/lib/corindon/dependency_injection/token/tagged_token.rb +24 -0
  18. data/lib/corindon/dependency_injection/token/value_token.rb +22 -0
  19. data/lib/corindon/ext/guards.rb +17 -0
  20. data/lib/corindon/ext/guards/error.rb +10 -0
  21. data/lib/corindon/result/errors/bad_return_type_error.rb +19 -0
  22. data/lib/corindon/result/errors/result_error.rb +10 -0
  23. data/lib/corindon/result/ext.rb +25 -0
  24. data/lib/corindon/result/failure.rb +22 -0
  25. data/lib/corindon/result/result.rb +24 -0
  26. data/lib/corindon/result/success.rb +34 -0
  27. data/lib/corindon/{ext/something.rb → something/ext.rb} +2 -2
  28. data/lib/corindon/version.rb +1 -1
  29. metadata +55 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a434327fdcd84d86831c646b72ff25fc3cd31b039372aae53ec049ce7ecc7f0b
4
- data.tar.gz: 84f16cdae405704f1332e10b15e4e406d735c051d01d1dfd23b0cbace986e68b
3
+ metadata.gz: ae37025ed53b2bec8d329d9d640d40425406a0c6b2ba8fcf85ec573e5b0cdd6d
4
+ data.tar.gz: 3d6c2d3acac3f22c5c15b5128a3a7e005a4f1c6ea1508472d29bdcfb5eefc19c
5
5
  SHA512:
6
- metadata.gz: b819f64edf34893ec6af428914c3b41f70b1f7718a2c0acd88c6ce5d5b51664a6c5d866131c20161ebf4d34180d1e011a018ffc88b27038128982d094461e479
7
- data.tar.gz: 9b1c58294f04fd4612c889ff537c2343c2bded16a44c30b0e8af9b15443e28caef5683f0ec0734624786e03aa88a5a942c61b9ef36efa0888ec7515c89fbd772
6
+ metadata.gz: c2d44b60b7a78a391211c194a62b1cabf76664dc2a2f2ab268bc716873468c7e9245f2c6acd18c344596d16b48e3b16ce8f1de028e3a8f30de6adc042f7e8dc9
7
+ data.tar.gz: 704342b6b6afe491f9c21f9de07841356edc8c02e504ac66646d195fc88b34733f65dfa3a25a0b0f6ab40927429a11e2dec640c2cbf6a5861fc0a2926dca0b37
@@ -15,8 +15,10 @@ Gem::Specification.new do |s|
15
15
 
16
16
  s.required_ruby_version = '>= 2.6.0'
17
17
 
18
+ s.add_dependency 'semantic', '~> 1.6'
18
19
  s.add_dependency 'zeitwerk', '~> 2.3'
19
20
 
21
+ s.add_development_dependency 'bundler'
20
22
  s.add_development_dependency 'minitest', '~> 5.14'
21
23
  s.add_development_dependency 'rake', '~> 13.0'
22
24
  end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Corindon
4
+ module Console
5
+ class Application
6
+ attr_reader :commands
7
+
8
+ def initialize
9
+ @commands = {}
10
+ end
11
+
12
+ def run(argv); end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Corindon
4
+ module Console
5
+ class BaseCommand
6
+ configure do |c|
7
+ c.name 'blabla'
8
+ end
9
+
10
+ def run(input, output); end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Corindon
4
+ module Console
5
+ class Input
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Corindon
4
+ module Console
5
+ class Output
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,127 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Corindon
4
+ module DependencyInjection
5
+ class Container
6
+ using Something::Ext
7
+
8
+ attr_reader :id_generator
9
+ attr_reader :injector
10
+
11
+ # @param [Id::IdGenerator] id_generator
12
+ def initialize(id_generator: Id::UuidGenerator.new)
13
+ @id_generator = id_generator
14
+ @services = {}
15
+ @definitions = {}
16
+ @parameters = {}
17
+ @tags = Hash.new { |hash, key| hash[key] = [] }
18
+
19
+ @injector = Injector.new(container: self)
20
+ end
21
+
22
+ # @param [Class] klass
23
+ # @return [String]
24
+ def add_definition(klass, id: nil, anonymous: false, context: {}, &block)
25
+ definition = if injectable?(klass)
26
+ klass.definition
27
+ elsif block.sth?
28
+ Dsl.new(klass).exec(context: context, &block)
29
+ else
30
+ Definition.new(klass)
31
+ end
32
+
33
+ # Generate an id if set to anonymous when registering
34
+ # If a definition is set to be anonymous but an id is provided zhen registering, use this id instead<
35
+ if anonymous || (definition.anonymous? && id.nil?)
36
+ id = id_generator.generate
37
+ end
38
+
39
+ id = id || definition.id || to_id(klass)
40
+ definitions[id] = definition
41
+ definition.tags.each { |tag| tags[tag] << id }
42
+
43
+ id
44
+ end
45
+
46
+ # @param [String] tag
47
+ # @return [Array<String>]
48
+ def tagged(tag)
49
+ if tags.key?(tag)
50
+
51
+ tags.fetch(tag)
52
+ else
53
+ []
54
+ end
55
+ end
56
+
57
+ # @param [Class, #to_s] key
58
+ # @return [Boolean]
59
+ def has?(key)
60
+ definitions.key?(to_id(key))
61
+ end
62
+
63
+ # Clears all the cache of services
64
+ def clear
65
+ @services = {}
66
+ end
67
+
68
+ # @param [Class, #to_s] key
69
+ # @return [Object]
70
+ def get(key)
71
+ id = to_id(key)
72
+
73
+ if has?(key)
74
+ services.fetch(id) { build_service(id) }
75
+ elsif injectable?(key)
76
+ key.definition.build(injector)
77
+ else
78
+ raise StandardError.new("No service #{id}")
79
+ end
80
+ end
81
+
82
+ # @param [Class, #to_s] key
83
+ # @param [Object] value
84
+ def set_parameter(name, value)
85
+ parameters[to_id(name)] = value
86
+ end
87
+
88
+ # @param [Class, #to_s] key
89
+ # @return [Boolean]
90
+ def parameter?(key)
91
+ parameters.key?(to_id(key))
92
+ end
93
+
94
+ # @param [Class, #to_s] key
95
+ # @return [Object]
96
+ def parameter(key)
97
+ parameters.fetch(to_id(key))
98
+ end
99
+
100
+ private
101
+
102
+ attr_reader :definitions
103
+ attr_reader :parameters
104
+ attr_reader :services
105
+ attr_reader :tags
106
+
107
+ def build_service(id)
108
+ definitions.fetch(id).build(injector).tap do |service|
109
+ services[id] = service
110
+ end
111
+ end
112
+
113
+ def injectable?(klass)
114
+ klass.is_a?(Class) && klass.ancestors.include?(Injectable)
115
+ end
116
+
117
+ # @param [Class, #to_s] key
118
+ def to_id(key)
119
+ if key.is_a?(Class)
120
+ key.name
121
+ else
122
+ key.to_s
123
+ end
124
+ end
125
+ end
126
+ end
127
+ end
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'semantic'
4
+
5
+ module Corindon
6
+ module DependencyInjection
7
+ class Definition
8
+ attr_reader :klass
9
+ attr_reader :args
10
+ attr_reader :kwargs
11
+ attr_reader :calls
12
+ attr_reader :tags
13
+ attr_reader :id
14
+
15
+ def initialize(klass, args: [], kwargs: {}, calls: [], tags: [], id: nil, anonymous: false)
16
+ @klass = klass
17
+ @args = args
18
+ @kwargs = kwargs
19
+ @calls = calls
20
+ @tags = tags
21
+ @id = id
22
+ @anonymous = anonymous
23
+ end
24
+
25
+ # @param [Injector] injector
26
+ # # @return [Object]
27
+ def build(injector)
28
+ object = do_call(klass, :new, injector.resolve(args), injector.resolve(kwargs))
29
+
30
+ calls.each do |(call, call_args, call_kwargs)|
31
+ do_call(object, call, injector.resolve(call_args), injector.resolve(call_kwargs))
32
+ end
33
+
34
+ object
35
+ end
36
+
37
+ # @return [Boolean]
38
+ def anonymous?
39
+ @anonymous
40
+ end
41
+
42
+ private
43
+
44
+ if ::Semantic::Version.new(RUBY_VERSION).satisfies?(">= 2.7.0")
45
+ def do_call(obj, method, args, kwargs)
46
+ obj.send(method, *args, **kwargs)
47
+ end
48
+ else
49
+ def do_call(obj, method, args, kwargs)
50
+ if args.empty? && kwargs.empty?
51
+ obj.send(method)
52
+ elsif args.empty?
53
+ obj.send(method, **kwargs)
54
+ elsif kwargs.empty?
55
+ obj.send(method, *args)
56
+ else
57
+ obj.send(method, *args, **kwargs)
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Corindon
4
+ module DependencyInjection
5
+ class Dsl
6
+ # @param [Class] klass
7
+ def initialize(klass, args: [], kwargs: {}, id: nil, anonymous: false)
8
+ @klass = klass
9
+ @args = args
10
+ @kwargs = kwargs
11
+ @calls = []
12
+ @tags = []
13
+ @id = id
14
+ @anonymous = anonymous
15
+ end
16
+
17
+ # @param [Hash] context
18
+ # @return [Definition]
19
+ def exec(context: {}, &block)
20
+ if context.is_a?(Hash)
21
+ context = OpenStruct.new(context)
22
+ end
23
+
24
+ instance_exec(context, &block)
25
+
26
+ Definition.new(@klass, args: @args, kwargs: @kwargs, calls: @calls, tags: @tags, id: @id, anonymous: @anonymous)
27
+ end
28
+
29
+ def args(*arguments, **kv_arguments)
30
+ @args = arguments
31
+ @kwargs = kv_arguments
32
+ end
33
+
34
+ # @param [String] name
35
+ def call(name, *arguments, **kv_arguments)
36
+ @calls << [name, arguments, kv_arguments]
37
+ end
38
+
39
+ # @param [String] id
40
+ def id(id)
41
+ @anonymous = false
42
+ @id = id
43
+ end
44
+
45
+ def anonymous!
46
+ @anonymous = true
47
+ @id = nil
48
+ end
49
+
50
+ # @param [Class, #to_s] key
51
+ # @return [Token::ParameterToken]
52
+ def param(key)
53
+ Token::ParameterToken.new(key: key)
54
+ end
55
+
56
+ # @param [String] tag
57
+ def tag(tag)
58
+ @tags << tag
59
+ end
60
+
61
+ # @return [Token::ServiceCallToken]
62
+ def on(id)
63
+ Token::ServiceCallToken.new(service: id)
64
+ end
65
+
66
+ # @return [Token::ValueToken]
67
+ def value(val)
68
+ Token::ValueToken.new(value: val)
69
+ end
70
+
71
+ # @param [String] tag
72
+ # @return [Token::TaggedToken]
73
+ def tagged(tag)
74
+ Token::TaggedToken.new(tag)
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Corindon
4
+ module DependencyInjection
5
+ module Id
6
+ class IdGenerator
7
+ # @return [String]
8
+ def generate; end
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Corindon
4
+ module DependencyInjection
5
+ module Id
6
+ class UuidGenerator < IdGenerator
7
+ # @return [String]
8
+ def generate
9
+ SecureRandom.uuid
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Corindon
4
+ module DependencyInjection
5
+ module Injectable
6
+ def definition
7
+ Definition.new(self)
8
+ end
9
+
10
+ refine Class do
11
+ def injectable(*args, **kwargs, &block)
12
+ include Injectable
13
+
14
+ define_singleton_method :definition do
15
+ if block.nil?
16
+ Definition.new(self, args: args, kwargs: kwargs)
17
+ else
18
+ Dsl.new(self).exec(&block)
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Corindon
4
+ module DependencyInjection
5
+ class Injector
6
+ # @return [Container]
7
+ attr_reader :container
8
+
9
+ # @param [Container] container
10
+ def initialize(container:)
11
+ @container = container
12
+ end
13
+
14
+ # @param [Object] value
15
+ def resolve(value)
16
+ if value.is_a?(Array)
17
+ value.map(&method(:resolve))
18
+ elsif value.is_a?(Hash)
19
+ value.transform_values(&method(:resolve))
20
+ elsif value.is_a?(Token::InjectionToken)
21
+ value.resolve(injector: self)
22
+ else
23
+ container.get(value)
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Corindon
4
+ module DependencyInjection
5
+ module Token
6
+ class InjectionToken
7
+ # @param [Injector] injector
8
+ def resolve(injector:) end
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Corindon
4
+ module DependencyInjection
5
+ module Token
6
+ class ParameterToken < InjectionToken
7
+ attr_reader :key
8
+
9
+ def initialize(key:)
10
+ super()
11
+
12
+ @key = key
13
+ end
14
+
15
+ # @param [Injector] injector
16
+ def resolve(injector:)
17
+ injector.container.parameter(key)
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Corindon
4
+ module DependencyInjection
5
+ module Token
6
+ class ServiceCallToken < InjectionToken
7
+ attr_reader :service
8
+ attr_reader :method
9
+ attr_reader :args
10
+ attr_reader :kwargs
11
+
12
+ def initialize(service:)
13
+ super()
14
+
15
+ @service = service
16
+ @args = []
17
+ @kwargs = {}
18
+ end
19
+
20
+ def call(method, *args, **kwargs)
21
+ @method = method
22
+ @args = args
23
+ @kwargs = kwargs
24
+
25
+ self
26
+ end
27
+
28
+ # @param [Injector] injector
29
+ def resolve(injector:)
30
+ do_call(
31
+ injector.resolve(service),
32
+ method,
33
+ injector.resolve(args),
34
+ injector.resolve(kwargs)
35
+ )
36
+ end
37
+
38
+ private
39
+
40
+ if ::Semantic::Version.new(RUBY_VERSION).satisfies?(">= 2.7.0")
41
+ def do_call(obj, method, args, kwargs)
42
+ obj.send(method, *args, **kwargs)
43
+ end
44
+ else
45
+ def do_call(obj, method, args, kwargs)
46
+ if args.empty? && kwargs.empty?
47
+ obj.send(method)
48
+ elsif args.empty?
49
+ obj.send(method, **kwargs)
50
+ elsif kwargs.empty?
51
+ obj.send(method, *args)
52
+ else
53
+ obj.send(method, *args, **kwargs)
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Corindon
4
+ module DependencyInjection
5
+ module Token
6
+ class TaggedToken < InjectionToken
7
+ # @return [String] tag
8
+ attr_reader :tag
9
+
10
+ # @param [String] tag
11
+ def initialize(tag)
12
+ super()
13
+
14
+ @tag = tag
15
+ end
16
+
17
+ # @param [Injector] injector
18
+ def resolve(injector:)
19
+ injector.container.tagged(tag).map { |id| injector.resolve(id) }
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Corindon
4
+ module DependencyInjection
5
+ module Token
6
+ class ValueToken < InjectionToken
7
+ attr_reader :value
8
+
9
+ # @param [Object] value
10
+ def initialize(value:)
11
+ super()
12
+
13
+ @value = value
14
+ end
15
+
16
+ def resolve(*)
17
+ @value
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Corindon
4
+ module Ext
5
+ module Guards
6
+ refine Object do
7
+ def unimplemented!(message = nil)
8
+ raise Error.new(message || "This method is not implemented.")
9
+ end
10
+
11
+ def unreachable!(message = nil)
12
+ raise Error.new(message || "Reached unreachable code.")
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Corindon
4
+ module Ext
5
+ module Guards
6
+ class Error < StandardError
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Corindon
4
+ module Result
5
+ module Errors
6
+ class BadReturnTypeError < ResultError
7
+ # @return [Object]
8
+ attr_reader :value
9
+
10
+ # @param [Object] value
11
+ def initialize(value)
12
+ super("Expected a Result, got #{value}")
13
+
14
+ @value = value
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Corindon
4
+ module Result
5
+ module Errors
6
+ class ResultError < StandardError
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Corindon
4
+ module Result
5
+ module Ext
6
+ refine Object do
7
+ def rescue_failure(&block)
8
+ block.call
9
+ rescue StandardError => error
10
+ Corindon::Result::Failure.new(error)
11
+ end
12
+
13
+ # rubocop:disable Naming/MethodName
14
+ def Failure(error)
15
+ Corindon::Result::Failure.new(error)
16
+ end
17
+
18
+ def Success(value)
19
+ Corindon::Result::Success.new(value)
20
+ end
21
+ # rubocop:enable Naming/MethodName
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Corindon
4
+ module Result
5
+ class Failure < Result
6
+ # @return [Exception]
7
+ attr_reader :error
8
+
9
+ # @param [Exception] error
10
+ def initialize(error)
11
+ super()
12
+
13
+ @error = error
14
+ end
15
+
16
+ # @return [Boolean]
17
+ def failure?
18
+ true
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Corindon
4
+ module Result
5
+ class Result
6
+ # @return [Boolean]
7
+ def success?
8
+ false
9
+ end
10
+
11
+ # @return [Boolean]
12
+ def failure?
13
+ false
14
+ end
15
+
16
+ # @yieldparam [Object] value
17
+ # @yieldreturn [Result]
18
+ # @return [Result]
19
+ def and_then(&_block)
20
+ self
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Corindon
4
+ module Result
5
+ class Success < Result
6
+ # @return [Object]
7
+ attr_reader :value
8
+
9
+ # @param [Object] value
10
+ def initialize(value)
11
+ super()
12
+
13
+ @value = value
14
+ end
15
+
16
+ # @return [Boolean]
17
+ def success?
18
+ true
19
+ end
20
+
21
+ def and_then(&block)
22
+ retval = block.call(value)
23
+
24
+ if retval.is_a?(Result)
25
+ retval
26
+ else
27
+ Failure.new(Errors::BadReturnTypeError.new(retval))
28
+ end
29
+ rescue StandardError => error
30
+ Failure.new(error)
31
+ end
32
+ end
33
+ end
34
+ end
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Corindon
4
- module Ext
5
- module Something
4
+ module Something
5
+ module Ext
6
6
  refine Object do
7
7
  def sth?
8
8
  !nil?
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Corindon
4
- VERSION = "0.1.0"
4
+ VERSION = "0.6.0"
5
5
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: corindon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.6.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: 2020-09-06 00:00:00.000000000 Z
11
+ date: 2020-10-04 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: semantic
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: zeitwerk
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -24,6 +38,20 @@ dependencies:
24
38
  - - "~>"
25
39
  - !ruby/object:Gem::Version
26
40
  version: '2.3'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
27
55
  - !ruby/object:Gem::Dependency
28
56
  name: minitest
29
57
  requirement: !ruby/object:Gem::Requirement
@@ -60,7 +88,31 @@ extra_rdoc_files: []
60
88
  files:
61
89
  - corindon.gemspec
62
90
  - lib/corindon.rb
63
- - lib/corindon/ext/something.rb
91
+ - lib/corindon/console/application.rb
92
+ - lib/corindon/console/base_command.rb
93
+ - lib/corindon/console/input.rb
94
+ - lib/corindon/console/output.rb
95
+ - lib/corindon/dependency_injection/container.rb
96
+ - lib/corindon/dependency_injection/definition.rb
97
+ - lib/corindon/dependency_injection/dsl.rb
98
+ - lib/corindon/dependency_injection/id/id_generator.rb
99
+ - lib/corindon/dependency_injection/id/uuid_generator.rb
100
+ - lib/corindon/dependency_injection/injectable.rb
101
+ - lib/corindon/dependency_injection/injector.rb
102
+ - lib/corindon/dependency_injection/token/injection_token.rb
103
+ - lib/corindon/dependency_injection/token/parameter_token.rb
104
+ - lib/corindon/dependency_injection/token/service_call_token.rb
105
+ - lib/corindon/dependency_injection/token/tagged_token.rb
106
+ - lib/corindon/dependency_injection/token/value_token.rb
107
+ - lib/corindon/ext/guards.rb
108
+ - lib/corindon/ext/guards/error.rb
109
+ - lib/corindon/result/errors/bad_return_type_error.rb
110
+ - lib/corindon/result/errors/result_error.rb
111
+ - lib/corindon/result/ext.rb
112
+ - lib/corindon/result/failure.rb
113
+ - lib/corindon/result/result.rb
114
+ - lib/corindon/result/success.rb
115
+ - lib/corindon/something/ext.rb
64
116
  - lib/corindon/version.rb
65
117
  homepage: https://gitlab.com/piotaixr/corindon
66
118
  licenses: