u-case 4.0.0 → 4.2.2

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.
@@ -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 __case_use_case(use_case, result, input)
8
- instance = use_case.__new__(result, input)
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.0.0
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-08-21 00:00:00.000000000 Z
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