corindon 0.2.0 → 0.7.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: 3d803035372216a30b75af02572aac4a1978e1f0d687c6425d26074913abfb1f
4
- data.tar.gz: '007096e0f7cfa51fc6b85d1b4a4c63ef920b13a6f6f8bd638313b9c7ddd4743b'
3
+ metadata.gz: e23965fecffcb108574ea3e42ae2889965914a65ebc80f71fbdb3f40e3b67e34
4
+ data.tar.gz: 96efc5116431669ef5ae2d88fa1945ba38d90fb14de3d35e7182154039efbde1
5
5
  SHA512:
6
- metadata.gz: 5a9fdc84c38dd60b28bedc5469305c6cbaaf52a3291f140494b3aab2f010a717afa54e797681aeb140f99700fef50688ead340301acf55e8322701f0048edae1
7
- data.tar.gz: b616cdbbefa1d2f84104082bb28deea30af5bdced64600a0d28ccd59f595928ed270de394f38a5c8040159973298213836315c74b2543d6828b292af0b1bc806
6
+ metadata.gz: b87c39aaa85e776fe0289cf9f97eafc80ce093d44775fb5753d864aa5e1ad1537c93b4f99dadce284ae4071f41ee15a03f873ee6230a3c2a246df5acb1fcd0c8
7
+ data.tar.gz: 13ff2f71fc510903f7430e4e37e528cc122a627d8e5228684c922c41b076aaf84a45f6620bcb9755c42a9e66676d117e2b83ef56218980abbe92550f4434f257
@@ -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
@@ -3,34 +3,92 @@
3
3
  module Corindon
4
4
  module DependencyInjection
5
5
  class Container
6
- using Ext::Something
6
+ using Something::Ext
7
7
 
8
- attr_reader :definitions
9
8
  attr_reader :injector
10
- attr_reader :services
11
9
 
12
- def initialize
10
+ # @param [Array<Definition>] definitions
11
+ def initialize(definitions: [], parameters: {}, service_built_listeners: [])
13
12
  @services = {}
14
13
  @definitions = {}
14
+ @parameters = parameters
15
+ @tags = Hash.new { |hash, key| hash[key] = [] }
15
16
 
16
17
  @injector = Injector.new(container: self)
18
+
19
+ definitions.each { |d| register_definition(d) }
20
+
21
+ @service_built_listeners = service_built_listeners
22
+ end
23
+
24
+ # @return [Container]
25
+ def dup
26
+ Container.new(
27
+ definitions: definitions.values,
28
+ parameters: parameters.dup,
29
+ service_built_listeners: service_built_listeners
30
+ )
31
+ end
32
+
33
+ # @param [Definition, Injectable, Class]
34
+ # @return [Definition]
35
+ def as_definition(def_or_injectable)
36
+ if def_or_injectable.is_a?(Definition)
37
+ def_or_injectable
38
+ elsif def_or_injectable.is_a?(Injectable)
39
+ def_or_injectable.definition
40
+ elsif def_or_injectable.is_a?(Class)
41
+ Definition.new(def_or_injectable)
42
+ else
43
+ raise StandardError.new("Don't know how to build #{def_or_injectable}")
44
+ end
45
+ end
46
+
47
+ # @param [Class, Injectable, Definition] def_or_injectable
48
+ # @return [String]
49
+ def add_definition(def_or_injectable, context: {}, &block)
50
+ definition = as_definition(def_or_injectable)
51
+
52
+ if block.sth?
53
+ definition = Dsl.from_definition(definition).exec(context: context, &block)
54
+ end
55
+
56
+ id = definition.id || to_id(def_or_injectable)
57
+
58
+ register_definition(
59
+ Definition.new(
60
+ definition.object_source,
61
+ id: id,
62
+ args: definition.args,
63
+ kwargs: definition.kwargs,
64
+ calls: definition.calls,
65
+ tags: definition.tags
66
+ )
67
+ )
68
+
69
+ id
17
70
  end
18
71
 
19
- # @param [Class] klass
20
- def add_definition(klass, &block)
21
- @definitions[to_id(klass)] = if injectable?(klass)
22
- klass.definition
23
- elsif block.sth?
24
- Dsl.new(klass).exec(&block)
25
- else
26
- Definition.new(klass)
27
- end
72
+ # @param [String] tag
73
+ # @return [Array<String>]
74
+ def tagged(tag)
75
+ if tags.key?(tag)
76
+
77
+ tags.fetch(tag)
78
+ else
79
+ []
80
+ end
28
81
  end
29
82
 
30
83
  # @param [Class, #to_s] key
31
84
  # @return [Boolean]
32
85
  def has?(key)
33
- @definitions.key?(to_id(key))
86
+ definitions.key?(to_id(key))
87
+ end
88
+
89
+ # Clears all the cache of services
90
+ def clear
91
+ @services = {}
34
92
  end
35
93
 
36
94
  # @param [Class, #to_s] key
@@ -47,21 +105,67 @@ module Corindon
47
105
  end
48
106
  end
49
107
 
108
+ # @param [Class, #to_s] key
109
+ # @param [Object] value
110
+ def set_parameter(name, value)
111
+ parameters[to_id(name)] = value
112
+ end
113
+
114
+ # @param [Class, #to_s] key
115
+ # @return [Boolean]
116
+ def parameter?(key)
117
+ parameters.key?(to_id(key))
118
+ end
119
+
120
+ # @param [Class, #to_s] key
121
+ # @return [Object]
122
+ def parameter(key)
123
+ parameters.fetch(to_id(key))
124
+ end
125
+
126
+ # @param [Proc{Object, Container}] listener
127
+ def on_service_built(listener)
128
+ service_built_listeners << listener
129
+ end
130
+
50
131
  private
51
132
 
133
+ # @return [Hash{String=>Definition}]
134
+ attr_reader :definitions
135
+ attr_reader :parameters
136
+ attr_reader :services
137
+ attr_reader :tags
138
+ attr_reader :service_built_listeners
139
+
140
+ def register_definition(definition)
141
+ definitions[definition.id] = definition
142
+ definition.tags.each { |tag| tags[tag] << definition.id }
143
+ end
144
+
52
145
  def build_service(id)
53
- @definitions.fetch(id).build(injector).tap do |service|
54
- @services[id] = service
146
+ service = injector.resolve(definitions.fetch(id)).tap do |svc|
147
+ services[id] = svc
55
148
  end
149
+
150
+ service_built_listeners.each do |listener|
151
+ listener.call(service, self)
152
+ end
153
+
154
+ service
56
155
  end
57
156
 
58
- def injectable?(klass)
59
- klass.ancestors.include?(Injectable)
157
+ def injectable?(object)
158
+ object.is_a?(Injectable)
60
159
  end
61
160
 
62
- # @param [Class, #to_s] key
161
+ # @param [Injectable, Identifiable, Class, Definition, #to_s] key
162
+ # @return [String]
63
163
  def to_id(key)
64
- if key.is_a?(Class)
164
+ if key.is_a?(Definition)
165
+ key.id
166
+ elsif injectable?(key)
167
+ to_id(key.definition)
168
+ elsif key.is_a?(Class)
65
169
  key.name
66
170
  else
67
171
  key.to_s
@@ -5,49 +5,40 @@ require 'semantic'
5
5
  module Corindon
6
6
  module DependencyInjection
7
7
  class Definition
8
- attr_reader :klass
8
+ attr_reader :object_source
9
9
  attr_reader :args
10
10
  attr_reader :kwargs
11
11
  attr_reader :calls
12
+ attr_reader :tags
13
+ # @return [String]
14
+ attr_reader :id
12
15
 
13
- def initialize(klass, args = [], kwargs = {}, calls = [])
14
- @klass = klass
16
+ def initialize(object_source, args: [], kwargs: {}, calls: [], tags: [], id: nil)
17
+ @object_source = object_source
15
18
  @args = args
16
19
  @kwargs = kwargs
17
20
  @calls = calls
21
+ @tags = tags
22
+ @id = id
18
23
  end
19
24
 
20
25
  # @param [Injector] injector
21
- # # @return [Object]
26
+ # @return [Object]
22
27
  def build(injector)
23
- object = do_call(klass, :new, *injector.resolve(args, kwargs))
28
+ source = if object_source.is_a?(Class)
29
+ [object_source, :new]
30
+ else
31
+ injector.resolve(object_source)
32
+ end
33
+
34
+ object = RubyCompat.do_call(*source, injector.resolve(args), injector.resolve(kwargs))
24
35
 
25
36
  calls.each do |(call, call_args, call_kwargs)|
26
- do_call(object, call, *injector.resolve(call_args, call_kwargs))
37
+ RubyCompat.do_call(object, call, injector.resolve(call_args), injector.resolve(call_kwargs))
27
38
  end
28
39
 
29
40
  object
30
41
  end
31
-
32
- private
33
-
34
- if ::Semantic::Version.new(RUBY_VERSION).satisfies?(">= 2.7.0")
35
- def do_call(obj, method, args, kwargs)
36
- obj.send(method, *args, **kwargs)
37
- end
38
- else
39
- def do_call(obj, method, args, kwargs)
40
- if args.empty? && kwargs.empty?
41
- obj.send(method)
42
- elsif args.empty?
43
- obj.send(method, **kwargs)
44
- elsif kwargs.empty?
45
- obj.send(method, *args)
46
- else
47
- obj.send(method, *args, **kwargs)
48
- end
49
- end
50
- end
51
42
  end
52
43
  end
53
44
  end
@@ -3,19 +3,41 @@
3
3
  module Corindon
4
4
  module DependencyInjection
5
5
  class Dsl
6
+ class << self
7
+ # @param [Definition] definition
8
+ # @return [Dsl]
9
+ def from_definition(definition)
10
+ new(
11
+ definition.object_source,
12
+ id: definition.id,
13
+ args: definition.args,
14
+ kwargs: definition.kwargs,
15
+ calls: definition.calls,
16
+ tags: definition.tags
17
+ )
18
+ end
19
+ end
20
+
6
21
  # @param [Class] klass
7
- def initialize(klass)
22
+ def initialize(klass, args: [], kwargs: {}, id: nil, calls: [], tags: [])
8
23
  @klass = klass
9
- @args = []
10
- @kwargs = {}
11
- @calls = []
24
+ @args = args
25
+ @kwargs = kwargs
26
+ @calls = calls
27
+ @tags = tags
28
+ @id = id
12
29
  end
13
30
 
31
+ # @param [Hash] context
14
32
  # @return [Definition]
15
- def exec(&block)
16
- instance_exec(&block)
33
+ def exec(context: {}, &block)
34
+ if context.is_a?(Hash)
35
+ context = OpenStruct.new(context)
36
+ end
17
37
 
18
- Definition.new(@klass, @args, @kwargs, @calls)
38
+ instance_exec(context, &block)
39
+
40
+ Definition.new(@klass, args: @args, kwargs: @kwargs, calls: @calls, tags: @tags, id: @id)
19
41
  end
20
42
 
21
43
  def args(*arguments, **kv_arguments)
@@ -27,6 +49,39 @@ module Corindon
27
49
  def call(name, *arguments, **kv_arguments)
28
50
  @calls << [name, arguments, kv_arguments]
29
51
  end
52
+
53
+ # @param [String] id
54
+ def id(id)
55
+ @anonymous = false
56
+ @id = id
57
+ end
58
+
59
+ # @param [Class, #to_s] key
60
+ # @return [Token::ParameterToken]
61
+ def param(key)
62
+ Token::ParameterToken.new(key: key)
63
+ end
64
+
65
+ # @param [String] tag
66
+ def tag(tag)
67
+ @tags << tag
68
+ end
69
+
70
+ # @return [Token::ServiceCallToken]
71
+ def on(id)
72
+ Token::ServiceCallToken.new(service: id)
73
+ end
74
+
75
+ # @return [Token::ValueToken]
76
+ def value(val)
77
+ Token::ValueToken.new(value: val)
78
+ end
79
+
80
+ # @param [String] tag
81
+ # @return [Token::TaggedToken]
82
+ def tagged(tag)
83
+ Token::TaggedToken.new(tag)
84
+ end
30
85
  end
31
86
  end
32
87
  end
@@ -3,22 +3,36 @@
3
3
  module Corindon
4
4
  module DependencyInjection
5
5
  module Injectable
6
- def definition
7
- Definition.new(self)
8
- end
9
-
10
6
  refine Class do
7
+ def factory(service, method)
8
+ Token::ServiceFactoryToken.new(service, method)
9
+ end
10
+
11
+ def make_parameter(name)
12
+ Token::ParameterToken.new(key: "#{self.name.downcase.gsub(/::/, '.')}.#{name}")
13
+ end
14
+
15
+ def make_definition(name, source, *args, **kwargs, &block)
16
+ do_make_definition("#{self.name.downcase.gsub(/::/, '.')}.#{name}", source, args: args, kwargs: kwargs, &block)
17
+ end
18
+
11
19
  def injectable(*args, **kwargs, &block)
12
- include Injectable
20
+ extend Injectable
13
21
 
14
22
  define_singleton_method :definition do
23
+ do_make_definition(name, self, args: args, kwargs: kwargs, &block)
24
+ end
25
+ end
26
+
27
+ private
28
+
29
+ def do_make_definition(name, source, args:, kwargs:, &block)
15
30
  if block.nil?
16
- Definition.new(self, args, kwargs, [])
31
+ Definition.new(source, args: args, kwargs: kwargs, id: name)
17
32
  else
18
- Dsl.new(self).exec(&block)
33
+ Dsl.new(source, args: args, kwargs: kwargs, id: name).exec(&block)
19
34
  end
20
35
  end
21
- end
22
36
  end
23
37
  end
24
38
  end
@@ -3,6 +3,7 @@
3
3
  module Corindon
4
4
  module DependencyInjection
5
5
  class Injector
6
+ # @return [Container]
6
7
  attr_reader :container
7
8
 
8
9
  # @param [Container] container
@@ -10,22 +11,20 @@ module Corindon
10
11
  @container = container
11
12
  end
12
13
 
13
- # @return [Array{Array, Hash}]
14
- def resolve(args, kwargs)
15
- [resolve_value(args), resolve_value(kwargs)]
16
- end
17
-
18
- private
19
-
20
- def resolve_value(value)
21
- if value.is_a?(Array)
22
- value.map(&method(:resolve_value))
23
- elsif value.is_a?(Hash)
24
- value.transform_values(&method(:resolve_value))
25
- else
26
- container.get(value)
27
- end
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
+ elsif value.is_a?(Definition)
23
+ value.build(self)
24
+ else
25
+ container.get(value)
28
26
  end
27
+ end
29
28
  end
30
29
  end
31
30
  end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Corindon
4
+ module DependencyInjection
5
+ class RubyCompat
6
+ class << self
7
+ if ::Semantic::Version.new(RUBY_VERSION).satisfies?(">= 2.7.0")
8
+ def do_call(obj, method, args, kwargs)
9
+ obj.send(method, *args, **kwargs)
10
+ end
11
+ else
12
+ def do_call(obj, method, args, kwargs)
13
+ if args.empty? && kwargs.empty?
14
+ obj.send(method)
15
+ elsif args.empty?
16
+ obj.send(method, **kwargs)
17
+ elsif kwargs.empty?
18
+ obj.send(method, *args)
19
+ else
20
+ obj.send(method, *args, **kwargs)
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ 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,40 @@
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
+ RubyCompat.do_call(
31
+ injector.resolve(service),
32
+ method,
33
+ injector.resolve(args),
34
+ injector.resolve(kwargs)
35
+ )
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Corindon
4
+ module DependencyInjection
5
+ module Token
6
+ class ServiceFactoryToken < InjectionToken
7
+ attr_reader :service
8
+ attr_reader :method
9
+
10
+ def initialize(service, method)
11
+ super()
12
+
13
+ @service = service
14
+ @method = method
15
+ end
16
+
17
+ # @param [Injector] injector
18
+ def resolve(injector:)
19
+ [injector.resolve(service), method]
20
+ end
21
+ end
22
+ end
23
+ end
24
+ 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 Guards
5
+ module Ext
6
+ refine Object do
7
+ def unimplemented!(message = nil)
8
+ raise NotImplementedError.new(message || "This method is not implemented.")
9
+ end
10
+
11
+ def unreachable!(message = nil)
12
+ raise StandardError.new(message || "Reached unreachable code.")
13
+ end
14
+ end
15
+ end
16
+ end
17
+ 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,27 @@
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
+ # @raise [Exception]
17
+ def unwrap!
18
+ raise error
19
+ end
20
+
21
+ # @return [Boolean]
22
+ def failure?
23
+ true
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ using Corindon::Guards::Ext
4
+
5
+ module Corindon
6
+ module Result
7
+ class Result
8
+ # @return [Boolean]
9
+ def success?
10
+ false
11
+ end
12
+
13
+ # @return [Boolean]
14
+ def failure?
15
+ false
16
+ end
17
+
18
+ # @raise [Exception] if called on a Failure
19
+ # @return [Object]
20
+ def unwrap!
21
+ unimplemented!
22
+ end
23
+
24
+ # @yieldparam [Object] value
25
+ # @yieldreturn [Result]
26
+ # @return [Result]
27
+ def and_then(&_block)
28
+ self
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,39 @@
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
+ # @return [Object]
22
+ def unwrap!
23
+ value
24
+ end
25
+
26
+ def and_then(&block)
27
+ retval = block.call(value)
28
+
29
+ if retval.is_a?(Result)
30
+ retval
31
+ else
32
+ Failure.new(Errors::BadReturnTypeError.new(retval))
33
+ end
34
+ rescue StandardError => error
35
+ Failure.new(error)
36
+ end
37
+ end
38
+ end
39
+ 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.2.0"
4
+ VERSION = "0.7.0"
5
5
  end
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.2.0
4
+ version: 0.7.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-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: semantic
@@ -88,12 +88,30 @@ extra_rdoc_files: []
88
88
  files:
89
89
  - corindon.gemspec
90
90
  - lib/corindon.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
91
95
  - lib/corindon/dependency_injection/container.rb
92
96
  - lib/corindon/dependency_injection/definition.rb
93
97
  - lib/corindon/dependency_injection/dsl.rb
94
98
  - lib/corindon/dependency_injection/injectable.rb
95
99
  - lib/corindon/dependency_injection/injector.rb
96
- - lib/corindon/ext/something.rb
100
+ - lib/corindon/dependency_injection/ruby_compat.rb
101
+ - lib/corindon/dependency_injection/token/injection_token.rb
102
+ - lib/corindon/dependency_injection/token/parameter_token.rb
103
+ - lib/corindon/dependency_injection/token/service_call_token.rb
104
+ - lib/corindon/dependency_injection/token/service_factory_token.rb
105
+ - lib/corindon/dependency_injection/token/tagged_token.rb
106
+ - lib/corindon/dependency_injection/token/value_token.rb
107
+ - lib/corindon/guards/ext.rb
108
+ - lib/corindon/result/errors/bad_return_type_error.rb
109
+ - lib/corindon/result/errors/result_error.rb
110
+ - lib/corindon/result/ext.rb
111
+ - lib/corindon/result/failure.rb
112
+ - lib/corindon/result/result.rb
113
+ - lib/corindon/result/success.rb
114
+ - lib/corindon/something/ext.rb
97
115
  - lib/corindon/version.rb
98
116
  homepage: https://gitlab.com/piotaixr/corindon
99
117
  licenses: