u-case 4.1.0 → 4.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|