u-case 4.0.0 → 4.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.sh +32 -10
- data/Gemfile +20 -9
- data/README.md +103 -99
- data/README.pt-BR.md +106 -105
- data/lib/micro/case.rb +70 -14
- data/lib/micro/case/result.rb +36 -6
- data/lib/micro/case/result/transitions.rb +0 -1
- data/lib/micro/case/result/wrapper.rb +50 -0
- data/lib/micro/case/safe.rb +1 -1
- data/lib/micro/case/utils.rb +19 -10
- data/lib/micro/case/version.rb +1 -1
- data/lib/micro/cases.rb +7 -0
- data/lib/micro/cases/error.rb +13 -0
- data/lib/micro/cases/flow.rb +27 -14
- data/lib/micro/cases/map.rb +39 -0
- data/lib/micro/cases/safe/flow.rb +2 -2
- data/lib/micro/cases/utils.rb +21 -0
- metadata +6 -2
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Micro
|
4
|
+
module Cases
|
5
|
+
class Map
|
6
|
+
IsAUseCaseOrFlowWithDefaults = -> arg { arg.is_a?(Array) && Micro.case_or_flow?(arg[0]) && arg[1].is_a?(Hash) }
|
7
|
+
IsAUseCaseOrFlow = -> arg { Micro.case_or_flow?(arg) || IsAUseCaseOrFlowWithDefaults[arg] }
|
8
|
+
HasValidArgs = -> (args) { Kind.of(Array, args).all?(&IsAUseCaseOrFlow) }
|
9
|
+
|
10
|
+
attr_reader :use_cases
|
11
|
+
|
12
|
+
def self.build(args)
|
13
|
+
raise Error::InvalidUseCases unless HasValidArgs[args]
|
14
|
+
|
15
|
+
new(args)
|
16
|
+
end
|
17
|
+
|
18
|
+
def initialize(use_cases)
|
19
|
+
@use_cases = use_cases
|
20
|
+
end
|
21
|
+
|
22
|
+
GetUseCaseResult = -> (hash) do
|
23
|
+
-> (use_case) do
|
24
|
+
return use_case.call(hash) unless use_case.is_a?(Array)
|
25
|
+
|
26
|
+
use_case[0].call(hash.merge(use_case[1]))
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def call(arg = {})
|
31
|
+
hash = Kind.of(Hash, arg)
|
32
|
+
|
33
|
+
use_cases.map(&GetUseCaseResult[hash])
|
34
|
+
end
|
35
|
+
|
36
|
+
private_constant :HasValidArgs, :IsAUseCaseOrFlow, :IsAUseCaseOrFlowWithDefaults, :GetUseCaseResult
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -4,8 +4,8 @@ module Micro
|
|
4
4
|
module Cases
|
5
5
|
module Safe
|
6
6
|
class Flow < Cases::Flow
|
7
|
-
private def
|
8
|
-
instance = use_case
|
7
|
+
private def __call_use_case(use_case, result, input)
|
8
|
+
instance = __build_use_case(use_case, result, input)
|
9
9
|
instance.__call__
|
10
10
|
rescue => exception
|
11
11
|
raise exception if Case::Error.by_wrong_usage?(exception)
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Micro
|
4
|
+
module Cases
|
5
|
+
|
6
|
+
module Utils
|
7
|
+
def self.map_use_cases(args)
|
8
|
+
collection = args.is_a?(Array) && args.size == 1 ? args[0] : args
|
9
|
+
|
10
|
+
Array(collection).each_with_object([]) do |arg, memo|
|
11
|
+
if arg.is_a?(Flow)
|
12
|
+
arg.use_cases.each { |use_case| memo << use_case }
|
13
|
+
else
|
14
|
+
memo << arg
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
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.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rodrigo Serradura
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-12-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: kind
|
@@ -97,14 +97,18 @@ files:
|
|
97
97
|
- lib/micro/case/error.rb
|
98
98
|
- lib/micro/case/result.rb
|
99
99
|
- lib/micro/case/result/transitions.rb
|
100
|
+
- lib/micro/case/result/wrapper.rb
|
100
101
|
- lib/micro/case/safe.rb
|
101
102
|
- lib/micro/case/strict.rb
|
102
103
|
- lib/micro/case/utils.rb
|
103
104
|
- lib/micro/case/version.rb
|
104
105
|
- lib/micro/case/with_activemodel_validation.rb
|
105
106
|
- lib/micro/cases.rb
|
107
|
+
- lib/micro/cases/error.rb
|
106
108
|
- lib/micro/cases/flow.rb
|
109
|
+
- lib/micro/cases/map.rb
|
107
110
|
- lib/micro/cases/safe/flow.rb
|
111
|
+
- lib/micro/cases/utils.rb
|
108
112
|
- lib/u-case.rb
|
109
113
|
- lib/u-case/with_activemodel_validation.rb
|
110
114
|
- test.sh
|