u-case 4.1.0 → 4.3.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 +4 -4
- data/.travis.sh +39 -16
- data/.travis.yml +9 -6
- data/Gemfile +22 -10
- data/README.md +108 -106
- data/README.pt-BR.md +112 -112
- data/lib/micro/case.rb +52 -5
- data/lib/micro/case/config.rb +3 -3
- data/lib/micro/case/result.rb +25 -25
- data/lib/micro/case/result/wrapper.rb +20 -15
- data/lib/micro/case/utils.rb +20 -24
- data/lib/micro/case/version.rb +1 -1
- data/lib/micro/cases/flow.rb +6 -2
- data/lib/micro/cases/map.rb +2 -2
- data/u-case.gemspec +2 -2
- metadata +16 -10
@@ -4,38 +4,43 @@ module Micro
|
|
4
4
|
class Case
|
5
5
|
class Result
|
6
6
|
class Wrapper
|
7
|
-
|
8
|
-
@__is_unknown = true
|
7
|
+
attr_reader :output
|
9
8
|
|
9
|
+
def initialize(result)
|
10
10
|
@result = result
|
11
|
+
@output = ::Kind::Undefined
|
12
|
+
|
13
|
+
@__is_unknown = true
|
11
14
|
end
|
12
15
|
|
13
16
|
def failure(type = nil)
|
14
|
-
return if @result.success?
|
17
|
+
return if @result.success? || !undefined_output?
|
15
18
|
|
16
|
-
if result_type?(type)
|
17
|
-
@__is_unknown = false
|
18
|
-
|
19
|
-
yield(@result)
|
20
|
-
end
|
19
|
+
set_output(yield(@result)) if result_type?(type)
|
21
20
|
end
|
22
21
|
|
23
22
|
def success(type = nil)
|
24
|
-
return if @result.failure?
|
23
|
+
return if @result.failure? || !undefined_output?
|
25
24
|
|
26
|
-
if result_type?(type)
|
27
|
-
@__is_unknown = false
|
28
|
-
|
29
|
-
yield(@result)
|
30
|
-
end
|
25
|
+
set_output(yield(@result)) if result_type?(type)
|
31
26
|
end
|
32
27
|
|
33
28
|
def unknown
|
34
|
-
|
29
|
+
@output = yield(@result) if @__is_unknown && undefined_output?
|
35
30
|
end
|
36
31
|
|
37
32
|
private
|
38
33
|
|
34
|
+
def set_output(value)
|
35
|
+
@__is_unknown = false
|
36
|
+
|
37
|
+
@output = value
|
38
|
+
end
|
39
|
+
|
40
|
+
def undefined_output?
|
41
|
+
::Kind::Undefined == @output
|
42
|
+
end
|
43
|
+
|
39
44
|
def result_type?(type)
|
40
45
|
type.nil? || @result.type == type
|
41
46
|
end
|
data/lib/micro/case/utils.rb
CHANGED
@@ -1,36 +1,32 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module Micro
|
4
|
-
class Case
|
5
|
-
module Utils
|
3
|
+
module Micro::Case::Utils
|
6
4
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
def self.symbolize_keys(hash)
|
13
|
-
return hash.transform_keys { |key| key.to_sym rescue key } if respond_to?(hash, :transform_keys)
|
5
|
+
module Hashes
|
6
|
+
def self.respond_to?(hash, method)
|
7
|
+
Kind::Hash[hash].respond_to?(method)
|
8
|
+
end
|
14
9
|
|
15
|
-
|
16
|
-
|
17
|
-
memo[key] = v
|
18
|
-
end
|
19
|
-
end
|
10
|
+
def self.symbolize_keys(hash)
|
11
|
+
return hash.transform_keys { |key| key.to_sym rescue key } if respond_to?(hash, :transform_keys)
|
20
12
|
|
21
|
-
|
22
|
-
|
13
|
+
hash.each_with_object({}) do |(k, v), memo|
|
14
|
+
key = k.to_sym rescue k
|
15
|
+
memo[key] = v
|
16
|
+
end
|
17
|
+
end
|
23
18
|
|
24
|
-
|
25
|
-
|
19
|
+
def self.stringify_keys(hash)
|
20
|
+
return hash.transform_keys(&:to_s) if respond_to?(hash, :transform_keys)
|
26
21
|
|
27
|
-
|
28
|
-
|
22
|
+
hash.each_with_object({}) { |(k, v), memo| memo[k.to_s] = v }
|
23
|
+
end
|
29
24
|
|
30
|
-
|
31
|
-
|
32
|
-
end
|
25
|
+
def self.slice(hash, keys)
|
26
|
+
return hash.slice(*keys) if respond_to?(hash, :slice)
|
33
27
|
|
28
|
+
hash.select { |key, _value| keys.include?(key) }
|
34
29
|
end
|
35
30
|
end
|
31
|
+
|
36
32
|
end
|
data/lib/micro/case/version.rb
CHANGED
data/lib/micro/cases/flow.rb
CHANGED
@@ -23,7 +23,7 @@ module Micro
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def inspect
|
26
|
-
'
|
26
|
+
'#<(%s) use_cases=%s>' % [self.class, @use_cases]
|
27
27
|
end
|
28
28
|
|
29
29
|
def call!(input:, result:)
|
@@ -39,7 +39,11 @@ module Micro
|
|
39
39
|
|
40
40
|
return result unless block_given?
|
41
41
|
|
42
|
-
|
42
|
+
result_wrapper = ::Micro::Case::Result::Wrapper.new(result)
|
43
|
+
|
44
|
+
yield(result_wrapper)
|
45
|
+
|
46
|
+
result_wrapper.output
|
43
47
|
end
|
44
48
|
|
45
49
|
alias __call__ call
|
data/lib/micro/cases/map.rb
CHANGED
@@ -5,7 +5,7 @@ module Micro
|
|
5
5
|
class Map
|
6
6
|
IsAUseCaseOrFlowWithDefaults = -> arg { arg.is_a?(Array) && Micro.case_or_flow?(arg[0]) && arg[1].is_a?(Hash) }
|
7
7
|
IsAUseCaseOrFlow = -> arg { Micro.case_or_flow?(arg) || IsAUseCaseOrFlowWithDefaults[arg] }
|
8
|
-
HasValidArgs = -> (args) { Kind
|
8
|
+
HasValidArgs = -> (args) { Kind::Array[args].all?(&IsAUseCaseOrFlow) }
|
9
9
|
|
10
10
|
attr_reader :use_cases
|
11
11
|
|
@@ -28,7 +28,7 @@ module Micro
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def call(arg = {})
|
31
|
-
hash = Kind
|
31
|
+
hash = Kind::Hash[arg]
|
32
32
|
|
33
33
|
use_cases.map(&GetUseCaseResult[hash])
|
34
34
|
end
|
data/u-case.gemspec
CHANGED
@@ -25,8 +25,8 @@ Gem::Specification.new do |spec|
|
|
25
25
|
|
26
26
|
spec.required_ruby_version = '>= 2.2.0'
|
27
27
|
|
28
|
-
spec.add_runtime_dependency 'kind', '>=
|
29
|
-
spec.add_runtime_dependency 'u-attributes', '
|
28
|
+
spec.add_runtime_dependency 'kind', '>= 4.0', '< 6.0'
|
29
|
+
spec.add_runtime_dependency 'u-attributes', '>= 2.7', '< 3.0'
|
30
30
|
|
31
31
|
spec.add_development_dependency 'bundler'
|
32
32
|
spec.add_development_dependency 'rake', '~> 13.0'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: u-case
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rodrigo Serradura
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-02-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: kind
|
@@ -16,34 +16,40 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '4.0'
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '
|
22
|
+
version: '6.0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
29
|
+
version: '4.0'
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
32
|
+
version: '6.0'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: u-attributes
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
|
-
- - "
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '2.7'
|
40
|
+
- - "<"
|
38
41
|
- !ruby/object:Gem::Version
|
39
|
-
version: '
|
42
|
+
version: '3.0'
|
40
43
|
type: :runtime
|
41
44
|
prerelease: false
|
42
45
|
version_requirements: !ruby/object:Gem::Requirement
|
43
46
|
requirements:
|
44
|
-
- - "
|
47
|
+
- - ">="
|
45
48
|
- !ruby/object:Gem::Version
|
46
|
-
version: '2.
|
49
|
+
version: '2.7'
|
50
|
+
- - "<"
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '3.0'
|
47
53
|
- !ruby/object:Gem::Dependency
|
48
54
|
name: bundler
|
49
55
|
requirement: !ruby/object:Gem::Requirement
|