mangrove 0.15.0 → 0.15.1
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/README.md +76 -5
- data/docs/Mangrove/ControlFlow/ControlSignal.html +1 -1
- data/docs/Mangrove/ControlFlow.html +1 -1
- data/docs/Mangrove/Option/ControlSignal.html +1 -1
- data/docs/Mangrove/Option/None.html +1 -1
- data/docs/Mangrove/Option/Some.html +1 -1
- data/docs/Mangrove/Option.html +1 -1
- data/docs/Mangrove/Result/ControlSignal.html +1 -1
- data/docs/Mangrove/Result/Err.html +1 -1
- data/docs/Mangrove/Result/Ok.html +1 -1
- data/docs/Mangrove/Result.html +1 -1
- data/docs/Mangrove.html +2 -2
- data/docs/_index.html +1 -1
- data/docs/file.README.html +76 -6
- data/docs/index.html +76 -6
- data/docs/top-level-namespace.html +1 -1
- data/lib/mangrove/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3d6d0e9800db396996eecc375574354d42930e986cee4bf4c1c7e2b424f05213
|
|
4
|
+
data.tar.gz: 64636fcd0b17e65102706310968c1a268bae66d37e666c1522bf5788f57b8f17
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: c940d7d70b04ff5936bb36487d344cc7f49edc383aeae0d284d75f3b082f3a0e8e3344f59c2d0fa1092671e893f198daf4840813746927a1486a9a81eca0e3c3
|
|
7
|
+
data.tar.gz: c46998c7434f0b679a59e2e407da4068a35642ea3d966184791d401f75f23be1e20fa85405e09e9e986b577771345045bbdc0c23e64aa8da18cf46c9dfd319a7
|
data/README.md
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
# Mangrove
|
|
2
2
|
Mangrove provides type utility to use with Sorbet.
|
|
3
|
+
use `rubocop-mangrove` to statically check rescuing ControlSignal is done
|
|
3
4
|
|
|
4
5
|
You can do something like this with the gem.
|
|
5
|
-
|
|
6
|
-
use `rubocop-mangrove`` to statically check rescuing ControlSignal is done
|
|
7
|
-
|
|
8
6
|
```ruby
|
|
9
7
|
class TransposeExample
|
|
10
8
|
extend T::Sig
|
|
@@ -27,6 +25,79 @@ end
|
|
|
27
25
|
|
|
28
26
|
expect(TransposeExample.new.divide_arguments_by_3([3, 4, 5])).to eq Mangrove::Result::Err.new(["number 4 is not divisible by 3", "number 5 is not divisible by 3"])
|
|
29
27
|
expect(TransposeExample.new.divide_arguments_by_3([3, 6, 9])).to eq Mangrove::Result::Ok.new([1, 2, 3])
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
or like this.
|
|
32
|
+
```ruby
|
|
33
|
+
class MyController
|
|
34
|
+
extend T::Sig
|
|
35
|
+
|
|
36
|
+
sig { params(input: String).returns(String) }
|
|
37
|
+
def create(input)
|
|
38
|
+
result = MyService.new.execute(input)
|
|
39
|
+
|
|
40
|
+
case result
|
|
41
|
+
when Mangrove::Result::Ok
|
|
42
|
+
result.ok_inner
|
|
43
|
+
when Mangrove::Result::Err
|
|
44
|
+
error = result.err_inner
|
|
45
|
+
|
|
46
|
+
case error
|
|
47
|
+
when MyService::MyServiceError::E1
|
|
48
|
+
"e1: #{error.inner.msg}"
|
|
49
|
+
when MyService::MyServiceError::E2
|
|
50
|
+
"e2: #{error.inner.msg}"
|
|
51
|
+
when MyService::MyServiceError::Other
|
|
52
|
+
"other: #{error.inner.msg}"
|
|
53
|
+
else T.absurd(error)
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
class MyService
|
|
60
|
+
extend T::Sig
|
|
61
|
+
extend T::Generic
|
|
62
|
+
|
|
63
|
+
include Kernel
|
|
64
|
+
|
|
65
|
+
E = type_member { { upper: MyServiceError } }
|
|
66
|
+
|
|
67
|
+
sig { params(input: String).returns(Mangrove::Result[String, MyServiceError]) }
|
|
68
|
+
def execute(input)
|
|
69
|
+
input
|
|
70
|
+
.safe_to_i
|
|
71
|
+
.map_err_wt(MyServiceError::Other) { |e|
|
|
72
|
+
MyServiceError::Other.new(MyAppError::Other.new(e))
|
|
73
|
+
}.and_then_wt(String) { |num|
|
|
74
|
+
if num < 1
|
|
75
|
+
Mangrove::Result.err(String, MyServiceError::E1.new(MyAppError::E1.new("num < 1")))
|
|
76
|
+
elsif num < 3
|
|
77
|
+
Mangrove::Result
|
|
78
|
+
.ok(num, String)
|
|
79
|
+
.and_then_wt(String) { |n|
|
|
80
|
+
if n < 2
|
|
81
|
+
Mangrove::Result.ok("`#{n}` < 2", String)
|
|
82
|
+
else
|
|
83
|
+
Mangrove::Result.err(String, "not `#{n}` < 2")
|
|
84
|
+
end
|
|
85
|
+
}
|
|
86
|
+
.map_err_wt(MyServiceError::E1) { |e|
|
|
87
|
+
MyServiceError::E1.new(MyAppError::E1.new("mapping to E1 #{e}"))
|
|
88
|
+
}
|
|
89
|
+
.map_ok { |str|
|
|
90
|
+
{
|
|
91
|
+
my_key: str
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
.map_ok(&:to_s)
|
|
95
|
+
else
|
|
96
|
+
Mangrove::Result.err(String, MyServiceError::E2.new(MyAppError::E2.new))
|
|
97
|
+
end
|
|
98
|
+
}
|
|
99
|
+
end
|
|
100
|
+
end
|
|
30
101
|
```
|
|
31
102
|
|
|
32
103
|
Other examples are available at [`spec/**/**_spec.rb`](https://github.com/kazzix14/mangrove/tree/main/spec).
|
|
@@ -48,7 +119,7 @@ bundle add mangrove
|
|
|
48
119
|
|
|
49
120
|
## Usage
|
|
50
121
|
|
|
51
|
-
Documentation is available
|
|
122
|
+
[Documentation is available here](https://kazzix14.github.io/mangrove/).
|
|
52
123
|
For more concrete examples, see [`spec/**/**_spec.rb`](https://github.com/kazzix14/mangrove/tree/main/spec).
|
|
53
124
|
|
|
54
125
|
```ruby
|
|
@@ -69,7 +140,7 @@ my_none = Option::None.new
|
|
|
69
140
|
include Mangrove::ControlFlow::Handler
|
|
70
141
|
```
|
|
71
142
|
|
|
72
|
-
## Commands
|
|
143
|
+
## Commands for Development
|
|
73
144
|
```
|
|
74
145
|
git config core.hooksPath hooks
|
|
75
146
|
bundle exec tapioca init
|
|
@@ -213,7 +213,7 @@
|
|
|
213
213
|
</div>
|
|
214
214
|
|
|
215
215
|
<div id="footer">
|
|
216
|
-
Generated on Tue Oct 31 12:
|
|
216
|
+
Generated on Tue Oct 31 12:15:12 2023 by
|
|
217
217
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
218
218
|
0.9.34 (ruby-3.2.2).
|
|
219
219
|
</div>
|
|
@@ -105,7 +105,7 @@
|
|
|
105
105
|
</div>
|
|
106
106
|
|
|
107
107
|
<div id="footer">
|
|
108
|
-
Generated on Tue Oct 31 12:
|
|
108
|
+
Generated on Tue Oct 31 12:15:12 2023 by
|
|
109
109
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
110
110
|
0.9.34 (ruby-3.2.2).
|
|
111
111
|
</div>
|
|
@@ -424,7 +424,7 @@
|
|
|
424
424
|
</div>
|
|
425
425
|
|
|
426
426
|
<div id="footer">
|
|
427
|
-
Generated on Tue Oct 31 12:
|
|
427
|
+
Generated on Tue Oct 31 12:15:14 2023 by
|
|
428
428
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
429
429
|
0.9.34 (ruby-3.2.2).
|
|
430
430
|
</div>
|
|
@@ -1075,7 +1075,7 @@
|
|
|
1075
1075
|
</div>
|
|
1076
1076
|
|
|
1077
1077
|
<div id="footer">
|
|
1078
|
-
Generated on Tue Oct 31 12:
|
|
1078
|
+
Generated on Tue Oct 31 12:15:13 2023 by
|
|
1079
1079
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
1080
1080
|
0.9.34 (ruby-3.2.2).
|
|
1081
1081
|
</div>
|
|
@@ -1192,7 +1192,7 @@
|
|
|
1192
1192
|
</div>
|
|
1193
1193
|
|
|
1194
1194
|
<div id="footer">
|
|
1195
|
-
Generated on Tue Oct 31 12:
|
|
1195
|
+
Generated on Tue Oct 31 12:15:13 2023 by
|
|
1196
1196
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
1197
1197
|
0.9.34 (ruby-3.2.2).
|
|
1198
1198
|
</div>
|
data/docs/Mangrove/Option.html
CHANGED
|
@@ -1135,7 +1135,7 @@
|
|
|
1135
1135
|
</div>
|
|
1136
1136
|
|
|
1137
1137
|
<div id="footer">
|
|
1138
|
-
Generated on Tue Oct 31 12:
|
|
1138
|
+
Generated on Tue Oct 31 12:15:12 2023 by
|
|
1139
1139
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
1140
1140
|
0.9.34 (ruby-3.2.2).
|
|
1141
1141
|
</div>
|
|
@@ -424,7 +424,7 @@
|
|
|
424
424
|
</div>
|
|
425
425
|
|
|
426
426
|
<div id="footer">
|
|
427
|
-
Generated on Tue Oct 31 12:
|
|
427
|
+
Generated on Tue Oct 31 12:15:14 2023 by
|
|
428
428
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
429
429
|
0.9.34 (ruby-3.2.2).
|
|
430
430
|
</div>
|
|
@@ -2079,7 +2079,7 @@
|
|
|
2079
2079
|
</div>
|
|
2080
2080
|
|
|
2081
2081
|
<div id="footer">
|
|
2082
|
-
Generated on Tue Oct 31 12:
|
|
2082
|
+
Generated on Tue Oct 31 12:15:14 2023 by
|
|
2083
2083
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
2084
2084
|
0.9.34 (ruby-3.2.2).
|
|
2085
2085
|
</div>
|
|
@@ -2044,7 +2044,7 @@
|
|
|
2044
2044
|
</div>
|
|
2045
2045
|
|
|
2046
2046
|
<div id="footer">
|
|
2047
|
-
Generated on Tue Oct 31 12:
|
|
2047
|
+
Generated on Tue Oct 31 12:15:13 2023 by
|
|
2048
2048
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
2049
2049
|
0.9.34 (ruby-3.2.2).
|
|
2050
2050
|
</div>
|
data/docs/Mangrove/Result.html
CHANGED
|
@@ -2124,7 +2124,7 @@
|
|
|
2124
2124
|
</div>
|
|
2125
2125
|
|
|
2126
2126
|
<div id="footer">
|
|
2127
|
-
Generated on Tue Oct 31 12:
|
|
2127
|
+
Generated on Tue Oct 31 12:15:12 2023 by
|
|
2128
2128
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
2129
2129
|
0.9.34 (ruby-3.2.2).
|
|
2130
2130
|
</div>
|
data/docs/Mangrove.html
CHANGED
|
@@ -118,7 +118,7 @@
|
|
|
118
118
|
<dt id="VERSION-constant" class="">VERSION =
|
|
119
119
|
|
|
120
120
|
</dt>
|
|
121
|
-
<dd><pre class="code"><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>0.15.
|
|
121
|
+
<dd><pre class="code"><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>0.15.1</span><span class='tstring_end'>"</span></span></pre></dd>
|
|
122
122
|
|
|
123
123
|
</dl>
|
|
124
124
|
|
|
@@ -134,7 +134,7 @@
|
|
|
134
134
|
</div>
|
|
135
135
|
|
|
136
136
|
<div id="footer">
|
|
137
|
-
Generated on Tue Oct 31 12:
|
|
137
|
+
Generated on Tue Oct 31 12:15:12 2023 by
|
|
138
138
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
139
139
|
0.9.34 (ruby-3.2.2).
|
|
140
140
|
</div>
|
data/docs/_index.html
CHANGED
|
@@ -215,7 +215,7 @@
|
|
|
215
215
|
</div>
|
|
216
216
|
|
|
217
217
|
<div id="footer">
|
|
218
|
-
Generated on Tue Oct 31 12:
|
|
218
|
+
Generated on Tue Oct 31 12:15:12 2023 by
|
|
219
219
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
220
220
|
0.9.34 (ruby-3.2.2).
|
|
221
221
|
</div>
|
data/docs/file.README.html
CHANGED
|
@@ -60,12 +60,10 @@
|
|
|
60
60
|
<div id="content"><div id='filecontents'>
|
|
61
61
|
<h1 id="label-Mangrove">Mangrove</h1>
|
|
62
62
|
|
|
63
|
-
<p>Mangrove provides type utility to use with Sorbet
|
|
63
|
+
<p>Mangrove provides type utility to use with Sorbet. use <code>rubocop-mangrove</code> to statically check rescuing ControlSignal is done</p>
|
|
64
64
|
|
|
65
65
|
<p>You can do something like this with the gem.</p>
|
|
66
66
|
|
|
67
|
-
<p>use ‘rubocop-mangrove“ to statically check rescuing ControlSignal is done</p>
|
|
68
|
-
|
|
69
67
|
<pre class="code ruby"><code class="ruby"><span class='kw'>class</span> <span class='const'>TransposeExample</span>
|
|
70
68
|
<span class='id identifier rubyid_extend'>extend</span> <span class='const'>T</span><span class='op'>::</span><span class='const'>Sig</span>
|
|
71
69
|
|
|
@@ -89,6 +87,78 @@
|
|
|
89
87
|
<span class='id identifier rubyid_expect'>expect</span><span class='lparen'>(</span><span class='const'>TransposeExample</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='period'>.</span><span class='id identifier rubyid_divide_arguments_by_3'>divide_arguments_by_3</span><span class='lparen'>(</span><span class='lbracket'>[</span><span class='int'>3</span><span class='comma'>,</span> <span class='int'>6</span><span class='comma'>,</span> <span class='int'>9</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to'>to</span> <span class='id identifier rubyid_eq'>eq</span> <span class='const'><span class='object_link'><a href="Mangrove.html" title="Mangrove (module)">Mangrove</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Mangrove/Result.html" title="Mangrove::Result (module)">Result</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Mangrove/Result/Ok.html" title="Mangrove::Result::Ok (class)">Ok</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="Mangrove/Result/Ok.html#initialize-instance_method" title="Mangrove::Result::Ok#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='lbracket'>[</span><span class='int'>1</span><span class='comma'>,</span> <span class='int'>2</span><span class='comma'>,</span> <span class='int'>3</span><span class='rbracket'>]</span><span class='rparen'>)</span>
|
|
90
88
|
</code></pre>
|
|
91
89
|
|
|
90
|
+
<p>or like this.</p>
|
|
91
|
+
|
|
92
|
+
<pre class="code ruby"><code class="ruby"><span class='kw'>class</span> <span class='const'>MyController</span>
|
|
93
|
+
<span class='id identifier rubyid_extend'>extend</span> <span class='const'>T</span><span class='op'>::</span><span class='const'>Sig</span>
|
|
94
|
+
|
|
95
|
+
<span class='id identifier rubyid_sig'>sig</span> <span class='lbrace'>{</span> <span class='id identifier rubyid_params'>params</span><span class='lparen'>(</span><span class='label'>input:</span> <span class='const'>String</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_returns'>returns</span><span class='lparen'>(</span><span class='const'>String</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
|
|
96
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span><span class='id identifier rubyid_input'>input</span><span class='rparen'>)</span>
|
|
97
|
+
<span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='const'>MyService</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='period'>.</span><span class='id identifier rubyid_execute'>execute</span><span class='lparen'>(</span><span class='id identifier rubyid_input'>input</span><span class='rparen'>)</span>
|
|
98
|
+
|
|
99
|
+
<span class='kw'>case</span> <span class='id identifier rubyid_result'>result</span>
|
|
100
|
+
<span class='kw'>when</span> <span class='const'><span class='object_link'><a href="Mangrove.html" title="Mangrove (module)">Mangrove</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Mangrove/Result.html" title="Mangrove::Result (module)">Result</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Mangrove/Result/Ok.html" title="Mangrove::Result::Ok (class)">Ok</a></span></span>
|
|
101
|
+
<span class='id identifier rubyid_result'>result</span><span class='period'>.</span><span class='id identifier rubyid_ok_inner'>ok_inner</span>
|
|
102
|
+
<span class='kw'>when</span> <span class='const'><span class='object_link'><a href="Mangrove.html" title="Mangrove (module)">Mangrove</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Mangrove/Result.html" title="Mangrove::Result (module)">Result</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Mangrove/Result/Err.html" title="Mangrove::Result::Err (class)">Err</a></span></span>
|
|
103
|
+
<span class='id identifier rubyid_error'>error</span> <span class='op'>=</span> <span class='id identifier rubyid_result'>result</span><span class='period'>.</span><span class='id identifier rubyid_err_inner'>err_inner</span>
|
|
104
|
+
|
|
105
|
+
<span class='kw'>case</span> <span class='id identifier rubyid_error'>error</span>
|
|
106
|
+
<span class='kw'>when</span> <span class='const'>MyService</span><span class='op'>::</span><span class='const'>MyServiceError</span><span class='op'>::</span><span class='const'>E1</span>
|
|
107
|
+
<span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>e1: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_error'>error</span><span class='period'>.</span><span class='id identifier rubyid_inner'>inner</span><span class='period'>.</span><span class='id identifier rubyid_msg'>msg</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span>
|
|
108
|
+
<span class='kw'>when</span> <span class='const'>MyService</span><span class='op'>::</span><span class='const'>MyServiceError</span><span class='op'>::</span><span class='const'>E2</span>
|
|
109
|
+
<span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>e2: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_error'>error</span><span class='period'>.</span><span class='id identifier rubyid_inner'>inner</span><span class='period'>.</span><span class='id identifier rubyid_msg'>msg</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span>
|
|
110
|
+
<span class='kw'>when</span> <span class='const'>MyService</span><span class='op'>::</span><span class='const'>MyServiceError</span><span class='op'>::</span><span class='const'>Other</span>
|
|
111
|
+
<span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>other: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_error'>error</span><span class='period'>.</span><span class='id identifier rubyid_inner'>inner</span><span class='period'>.</span><span class='id identifier rubyid_msg'>msg</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span>
|
|
112
|
+
<span class='kw'>else</span> <span class='const'>T</span><span class='period'>.</span><span class='id identifier rubyid_absurd'>absurd</span><span class='lparen'>(</span><span class='id identifier rubyid_error'>error</span><span class='rparen'>)</span>
|
|
113
|
+
<span class='kw'>end</span>
|
|
114
|
+
<span class='kw'>end</span>
|
|
115
|
+
<span class='kw'>end</span>
|
|
116
|
+
<span class='kw'>end</span>
|
|
117
|
+
|
|
118
|
+
<span class='kw'>class</span> <span class='const'>MyService</span>
|
|
119
|
+
<span class='id identifier rubyid_extend'>extend</span> <span class='const'>T</span><span class='op'>::</span><span class='const'>Sig</span>
|
|
120
|
+
<span class='id identifier rubyid_extend'>extend</span> <span class='const'>T</span><span class='op'>::</span><span class='const'>Generic</span>
|
|
121
|
+
|
|
122
|
+
<span class='id identifier rubyid_include'>include</span> <span class='const'>Kernel</span>
|
|
123
|
+
|
|
124
|
+
<span class='const'>E</span> <span class='op'>=</span> <span class='id identifier rubyid_type_member'>type_member</span> <span class='lbrace'>{</span> <span class='lbrace'>{</span> <span class='label'>upper:</span> <span class='const'>MyServiceError</span> <span class='rbrace'>}</span> <span class='rbrace'>}</span>
|
|
125
|
+
|
|
126
|
+
<span class='id identifier rubyid_sig'>sig</span> <span class='lbrace'>{</span> <span class='id identifier rubyid_params'>params</span><span class='lparen'>(</span><span class='label'>input:</span> <span class='const'>String</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_returns'>returns</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Mangrove.html" title="Mangrove (module)">Mangrove</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Mangrove/Result.html" title="Mangrove::Result (module)">Result</a></span></span><span class='lbracket'>[</span><span class='const'>String</span><span class='comma'>,</span> <span class='const'>MyServiceError</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
|
|
127
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_execute'>execute</span><span class='lparen'>(</span><span class='id identifier rubyid_input'>input</span><span class='rparen'>)</span>
|
|
128
|
+
<span class='id identifier rubyid_input'>input</span>
|
|
129
|
+
<span class='period'>.</span><span class='id identifier rubyid_safe_to_i'>safe_to_i</span>
|
|
130
|
+
<span class='period'>.</span><span class='id identifier rubyid_map_err_wt'>map_err_wt</span><span class='lparen'>(</span><span class='const'>MyServiceError</span><span class='op'>::</span><span class='const'>Other</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_e'>e</span><span class='op'>|</span>
|
|
131
|
+
<span class='const'>MyServiceError</span><span class='op'>::</span><span class='const'>Other</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='const'>MyAppError</span><span class='op'>::</span><span class='const'>Other</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_e'>e</span><span class='rparen'>)</span><span class='rparen'>)</span>
|
|
132
|
+
<span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_and_then_wt'>and_then_wt</span><span class='lparen'>(</span><span class='const'>String</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_num'>num</span><span class='op'>|</span>
|
|
133
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_num'>num</span> <span class='op'><</span> <span class='int'>1</span>
|
|
134
|
+
<span class='const'><span class='object_link'><a href="Mangrove.html" title="Mangrove (module)">Mangrove</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Mangrove/Result.html" title="Mangrove::Result (module)">Result</a></span></span><span class='period'>.</span><span class='id identifier rubyid_err'><span class='object_link'><a href="Mangrove/Result.html#err-class_method" title="Mangrove::Result.err (method)">err</a></span></span><span class='lparen'>(</span><span class='const'>String</span><span class='comma'>,</span> <span class='const'>MyServiceError</span><span class='op'>::</span><span class='const'>E1</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='const'>MyAppError</span><span class='op'>::</span><span class='const'>E1</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>num < 1</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='rparen'>)</span><span class='rparen'>)</span>
|
|
135
|
+
<span class='kw'>elsif</span> <span class='id identifier rubyid_num'>num</span> <span class='op'><</span> <span class='int'>3</span>
|
|
136
|
+
<span class='const'><span class='object_link'><a href="Mangrove.html" title="Mangrove (module)">Mangrove</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Mangrove/Result.html" title="Mangrove::Result (module)">Result</a></span></span>
|
|
137
|
+
<span class='period'>.</span><span class='id identifier rubyid_ok'>ok</span><span class='lparen'>(</span><span class='id identifier rubyid_num'>num</span><span class='comma'>,</span> <span class='const'>String</span><span class='rparen'>)</span>
|
|
138
|
+
<span class='period'>.</span><span class='id identifier rubyid_and_then_wt'>and_then_wt</span><span class='lparen'>(</span><span class='const'>String</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_n'>n</span><span class='op'>|</span>
|
|
139
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_n'>n</span> <span class='op'><</span> <span class='int'>2</span>
|
|
140
|
+
<span class='const'><span class='object_link'><a href="Mangrove.html" title="Mangrove (module)">Mangrove</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Mangrove/Result.html" title="Mangrove::Result (module)">Result</a></span></span><span class='period'>.</span><span class='id identifier rubyid_ok'><span class='object_link'><a href="Mangrove/Result.html#ok-class_method" title="Mangrove::Result.ok (method)">ok</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>`</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_n'>n</span><span class='embexpr_end'>}</span><span class='tstring_content'>` < 2</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='const'>String</span><span class='rparen'>)</span>
|
|
141
|
+
<span class='kw'>else</span>
|
|
142
|
+
<span class='const'><span class='object_link'><a href="Mangrove.html" title="Mangrove (module)">Mangrove</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Mangrove/Result.html" title="Mangrove::Result (module)">Result</a></span></span><span class='period'>.</span><span class='id identifier rubyid_err'><span class='object_link'><a href="Mangrove/Result.html#err-class_method" title="Mangrove::Result.err (method)">err</a></span></span><span class='lparen'>(</span><span class='const'>String</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>not `</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_n'>n</span><span class='embexpr_end'>}</span><span class='tstring_content'>` < 2</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
|
143
|
+
<span class='kw'>end</span>
|
|
144
|
+
<span class='rbrace'>}</span>
|
|
145
|
+
<span class='period'>.</span><span class='id identifier rubyid_map_err_wt'>map_err_wt</span><span class='lparen'>(</span><span class='const'>MyServiceError</span><span class='op'>::</span><span class='const'>E1</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_e'>e</span><span class='op'>|</span>
|
|
146
|
+
<span class='const'>MyServiceError</span><span class='op'>::</span><span class='const'>E1</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='const'>MyAppError</span><span class='op'>::</span><span class='const'>E1</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>mapping to E1 </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e'>e</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='rparen'>)</span>
|
|
147
|
+
<span class='rbrace'>}</span>
|
|
148
|
+
<span class='period'>.</span><span class='id identifier rubyid_map_ok'>map_ok</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_str'>str</span><span class='op'>|</span>
|
|
149
|
+
<span class='lbrace'>{</span>
|
|
150
|
+
<span class='label'>my_key:</span> <span class='id identifier rubyid_str'>str</span>
|
|
151
|
+
<span class='rbrace'>}</span>
|
|
152
|
+
<span class='rbrace'>}</span>
|
|
153
|
+
<span class='period'>.</span><span class='id identifier rubyid_map_ok'>map_ok</span><span class='lparen'>(</span><span class='op'>&</span><span class='symbol'>:to_s</span><span class='rparen'>)</span>
|
|
154
|
+
<span class='kw'>else</span>
|
|
155
|
+
<span class='const'><span class='object_link'><a href="Mangrove.html" title="Mangrove (module)">Mangrove</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Mangrove/Result.html" title="Mangrove::Result (module)">Result</a></span></span><span class='period'>.</span><span class='id identifier rubyid_err'><span class='object_link'><a href="Mangrove/Result.html#err-class_method" title="Mangrove::Result.err (method)">err</a></span></span><span class='lparen'>(</span><span class='const'>String</span><span class='comma'>,</span> <span class='const'>MyServiceError</span><span class='op'>::</span><span class='const'>E2</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='const'>MyAppError</span><span class='op'>::</span><span class='const'>E2</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='rparen'>)</span><span class='rparen'>)</span>
|
|
156
|
+
<span class='kw'>end</span>
|
|
157
|
+
<span class='rbrace'>}</span>
|
|
158
|
+
<span class='kw'>end</span>
|
|
159
|
+
<span class='kw'>end</span>
|
|
160
|
+
</code></pre>
|
|
161
|
+
|
|
92
162
|
<p>Other examples are available at href="https://github.com/kazzix14/mangrove/tree/main/spec"></a>.</p>
|
|
93
163
|
|
|
94
164
|
<h2 id="label-Features">Features</h2>
|
|
@@ -113,7 +183,7 @@
|
|
|
113
183
|
|
|
114
184
|
<h2 id="label-Usage">Usage</h2>
|
|
115
185
|
|
|
116
|
-
<p
|
|
186
|
+
<p><a href="https://kazzix14.github.io/mangrove/">Documentation is available here</a>. For more concrete examples, see href="https://github.com/kazzix14/mangrove/tree/main/spec"></a>.</p>
|
|
117
187
|
|
|
118
188
|
<pre class="code ruby"><code class="ruby"><span class='const'><span class='object_link'><a href="Mangrove.html" title="Mangrove (module)">Mangrove</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Mangrove/Result.html" title="Mangrove::Result (module)">Result</a></span></span><span class='lbracket'>[</span><span class='const'>OkType</span><span class='comma'>,</span> <span class='const'>ErrType</span><span class='rbracket'>]</span>
|
|
119
189
|
<span class='const'><span class='object_link'><a href="Mangrove.html" title="Mangrove (module)">Mangrove</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Mangrove/Result.html" title="Mangrove::Result (module)">Result</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Mangrove/Result/Ok.html" title="Mangrove::Result::Ok (class)">Ok</a></span></span><span class='lbracket'>[</span><span class='const'>OkType</span><span class='comma'>,</span> <span class='const'>ErrType</span><span class='rbracket'>]</span>
|
|
@@ -132,7 +202,7 @@
|
|
|
132
202
|
</span><span class='id identifier rubyid_include'>include</span> <span class='const'><span class='object_link'><a href="Mangrove.html" title="Mangrove (module)">Mangrove</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Mangrove/ControlFlow.html" title="Mangrove::ControlFlow (module)">ControlFlow</a></span></span><span class='op'>::</span><span class='const'>Handler</span>
|
|
133
203
|
</code></pre>
|
|
134
204
|
|
|
135
|
-
<h2 id="label-Commands">Commands</h2>
|
|
205
|
+
<h2 id="label-Commands+for+Development">Commands for Development</h2>
|
|
136
206
|
|
|
137
207
|
<pre class="code ruby"><code class="ruby">git config core.hooksPath hooks
|
|
138
208
|
bundle exec tapioca init
|
|
@@ -162,7 +232,7 @@ rake release
|
|
|
162
232
|
</div></div>
|
|
163
233
|
|
|
164
234
|
<div id="footer">
|
|
165
|
-
Generated on Tue Oct 31 12:
|
|
235
|
+
Generated on Tue Oct 31 12:15:12 2023 by
|
|
166
236
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
167
237
|
0.9.34 (ruby-3.2.2).
|
|
168
238
|
</div>
|
data/docs/index.html
CHANGED
|
@@ -60,12 +60,10 @@
|
|
|
60
60
|
<div id="content"><div id='filecontents'>
|
|
61
61
|
<h1 id="label-Mangrove">Mangrove</h1>
|
|
62
62
|
|
|
63
|
-
<p>Mangrove provides type utility to use with Sorbet
|
|
63
|
+
<p>Mangrove provides type utility to use with Sorbet. use <code>rubocop-mangrove</code> to statically check rescuing ControlSignal is done</p>
|
|
64
64
|
|
|
65
65
|
<p>You can do something like this with the gem.</p>
|
|
66
66
|
|
|
67
|
-
<p>use ‘rubocop-mangrove“ to statically check rescuing ControlSignal is done</p>
|
|
68
|
-
|
|
69
67
|
<pre class="code ruby"><code class="ruby"><span class='kw'>class</span> <span class='const'>TransposeExample</span>
|
|
70
68
|
<span class='id identifier rubyid_extend'>extend</span> <span class='const'>T</span><span class='op'>::</span><span class='const'>Sig</span>
|
|
71
69
|
|
|
@@ -89,6 +87,78 @@
|
|
|
89
87
|
<span class='id identifier rubyid_expect'>expect</span><span class='lparen'>(</span><span class='const'>TransposeExample</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='period'>.</span><span class='id identifier rubyid_divide_arguments_by_3'>divide_arguments_by_3</span><span class='lparen'>(</span><span class='lbracket'>[</span><span class='int'>3</span><span class='comma'>,</span> <span class='int'>6</span><span class='comma'>,</span> <span class='int'>9</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to'>to</span> <span class='id identifier rubyid_eq'>eq</span> <span class='const'><span class='object_link'><a href="Mangrove.html" title="Mangrove (module)">Mangrove</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Mangrove/Result.html" title="Mangrove::Result (module)">Result</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Mangrove/Result/Ok.html" title="Mangrove::Result::Ok (class)">Ok</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="Mangrove/Result/Ok.html#initialize-instance_method" title="Mangrove::Result::Ok#initialize (method)">new</a></span></span><span class='lparen'>(</span><span class='lbracket'>[</span><span class='int'>1</span><span class='comma'>,</span> <span class='int'>2</span><span class='comma'>,</span> <span class='int'>3</span><span class='rbracket'>]</span><span class='rparen'>)</span>
|
|
90
88
|
</code></pre>
|
|
91
89
|
|
|
90
|
+
<p>or like this.</p>
|
|
91
|
+
|
|
92
|
+
<pre class="code ruby"><code class="ruby"><span class='kw'>class</span> <span class='const'>MyController</span>
|
|
93
|
+
<span class='id identifier rubyid_extend'>extend</span> <span class='const'>T</span><span class='op'>::</span><span class='const'>Sig</span>
|
|
94
|
+
|
|
95
|
+
<span class='id identifier rubyid_sig'>sig</span> <span class='lbrace'>{</span> <span class='id identifier rubyid_params'>params</span><span class='lparen'>(</span><span class='label'>input:</span> <span class='const'>String</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_returns'>returns</span><span class='lparen'>(</span><span class='const'>String</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
|
|
96
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_create'>create</span><span class='lparen'>(</span><span class='id identifier rubyid_input'>input</span><span class='rparen'>)</span>
|
|
97
|
+
<span class='id identifier rubyid_result'>result</span> <span class='op'>=</span> <span class='const'>MyService</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='period'>.</span><span class='id identifier rubyid_execute'>execute</span><span class='lparen'>(</span><span class='id identifier rubyid_input'>input</span><span class='rparen'>)</span>
|
|
98
|
+
|
|
99
|
+
<span class='kw'>case</span> <span class='id identifier rubyid_result'>result</span>
|
|
100
|
+
<span class='kw'>when</span> <span class='const'><span class='object_link'><a href="Mangrove.html" title="Mangrove (module)">Mangrove</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Mangrove/Result.html" title="Mangrove::Result (module)">Result</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Mangrove/Result/Ok.html" title="Mangrove::Result::Ok (class)">Ok</a></span></span>
|
|
101
|
+
<span class='id identifier rubyid_result'>result</span><span class='period'>.</span><span class='id identifier rubyid_ok_inner'>ok_inner</span>
|
|
102
|
+
<span class='kw'>when</span> <span class='const'><span class='object_link'><a href="Mangrove.html" title="Mangrove (module)">Mangrove</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Mangrove/Result.html" title="Mangrove::Result (module)">Result</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Mangrove/Result/Err.html" title="Mangrove::Result::Err (class)">Err</a></span></span>
|
|
103
|
+
<span class='id identifier rubyid_error'>error</span> <span class='op'>=</span> <span class='id identifier rubyid_result'>result</span><span class='period'>.</span><span class='id identifier rubyid_err_inner'>err_inner</span>
|
|
104
|
+
|
|
105
|
+
<span class='kw'>case</span> <span class='id identifier rubyid_error'>error</span>
|
|
106
|
+
<span class='kw'>when</span> <span class='const'>MyService</span><span class='op'>::</span><span class='const'>MyServiceError</span><span class='op'>::</span><span class='const'>E1</span>
|
|
107
|
+
<span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>e1: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_error'>error</span><span class='period'>.</span><span class='id identifier rubyid_inner'>inner</span><span class='period'>.</span><span class='id identifier rubyid_msg'>msg</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span>
|
|
108
|
+
<span class='kw'>when</span> <span class='const'>MyService</span><span class='op'>::</span><span class='const'>MyServiceError</span><span class='op'>::</span><span class='const'>E2</span>
|
|
109
|
+
<span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>e2: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_error'>error</span><span class='period'>.</span><span class='id identifier rubyid_inner'>inner</span><span class='period'>.</span><span class='id identifier rubyid_msg'>msg</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span>
|
|
110
|
+
<span class='kw'>when</span> <span class='const'>MyService</span><span class='op'>::</span><span class='const'>MyServiceError</span><span class='op'>::</span><span class='const'>Other</span>
|
|
111
|
+
<span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>other: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_error'>error</span><span class='period'>.</span><span class='id identifier rubyid_inner'>inner</span><span class='period'>.</span><span class='id identifier rubyid_msg'>msg</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span>
|
|
112
|
+
<span class='kw'>else</span> <span class='const'>T</span><span class='period'>.</span><span class='id identifier rubyid_absurd'>absurd</span><span class='lparen'>(</span><span class='id identifier rubyid_error'>error</span><span class='rparen'>)</span>
|
|
113
|
+
<span class='kw'>end</span>
|
|
114
|
+
<span class='kw'>end</span>
|
|
115
|
+
<span class='kw'>end</span>
|
|
116
|
+
<span class='kw'>end</span>
|
|
117
|
+
|
|
118
|
+
<span class='kw'>class</span> <span class='const'>MyService</span>
|
|
119
|
+
<span class='id identifier rubyid_extend'>extend</span> <span class='const'>T</span><span class='op'>::</span><span class='const'>Sig</span>
|
|
120
|
+
<span class='id identifier rubyid_extend'>extend</span> <span class='const'>T</span><span class='op'>::</span><span class='const'>Generic</span>
|
|
121
|
+
|
|
122
|
+
<span class='id identifier rubyid_include'>include</span> <span class='const'>Kernel</span>
|
|
123
|
+
|
|
124
|
+
<span class='const'>E</span> <span class='op'>=</span> <span class='id identifier rubyid_type_member'>type_member</span> <span class='lbrace'>{</span> <span class='lbrace'>{</span> <span class='label'>upper:</span> <span class='const'>MyServiceError</span> <span class='rbrace'>}</span> <span class='rbrace'>}</span>
|
|
125
|
+
|
|
126
|
+
<span class='id identifier rubyid_sig'>sig</span> <span class='lbrace'>{</span> <span class='id identifier rubyid_params'>params</span><span class='lparen'>(</span><span class='label'>input:</span> <span class='const'>String</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_returns'>returns</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Mangrove.html" title="Mangrove (module)">Mangrove</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Mangrove/Result.html" title="Mangrove::Result (module)">Result</a></span></span><span class='lbracket'>[</span><span class='const'>String</span><span class='comma'>,</span> <span class='const'>MyServiceError</span><span class='rbracket'>]</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
|
|
127
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_execute'>execute</span><span class='lparen'>(</span><span class='id identifier rubyid_input'>input</span><span class='rparen'>)</span>
|
|
128
|
+
<span class='id identifier rubyid_input'>input</span>
|
|
129
|
+
<span class='period'>.</span><span class='id identifier rubyid_safe_to_i'>safe_to_i</span>
|
|
130
|
+
<span class='period'>.</span><span class='id identifier rubyid_map_err_wt'>map_err_wt</span><span class='lparen'>(</span><span class='const'>MyServiceError</span><span class='op'>::</span><span class='const'>Other</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_e'>e</span><span class='op'>|</span>
|
|
131
|
+
<span class='const'>MyServiceError</span><span class='op'>::</span><span class='const'>Other</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='const'>MyAppError</span><span class='op'>::</span><span class='const'>Other</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='id identifier rubyid_e'>e</span><span class='rparen'>)</span><span class='rparen'>)</span>
|
|
132
|
+
<span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_and_then_wt'>and_then_wt</span><span class='lparen'>(</span><span class='const'>String</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_num'>num</span><span class='op'>|</span>
|
|
133
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_num'>num</span> <span class='op'><</span> <span class='int'>1</span>
|
|
134
|
+
<span class='const'><span class='object_link'><a href="Mangrove.html" title="Mangrove (module)">Mangrove</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Mangrove/Result.html" title="Mangrove::Result (module)">Result</a></span></span><span class='period'>.</span><span class='id identifier rubyid_err'><span class='object_link'><a href="Mangrove/Result.html#err-class_method" title="Mangrove::Result.err (method)">err</a></span></span><span class='lparen'>(</span><span class='const'>String</span><span class='comma'>,</span> <span class='const'>MyServiceError</span><span class='op'>::</span><span class='const'>E1</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='const'>MyAppError</span><span class='op'>::</span><span class='const'>E1</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>num < 1</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='rparen'>)</span><span class='rparen'>)</span>
|
|
135
|
+
<span class='kw'>elsif</span> <span class='id identifier rubyid_num'>num</span> <span class='op'><</span> <span class='int'>3</span>
|
|
136
|
+
<span class='const'><span class='object_link'><a href="Mangrove.html" title="Mangrove (module)">Mangrove</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Mangrove/Result.html" title="Mangrove::Result (module)">Result</a></span></span>
|
|
137
|
+
<span class='period'>.</span><span class='id identifier rubyid_ok'>ok</span><span class='lparen'>(</span><span class='id identifier rubyid_num'>num</span><span class='comma'>,</span> <span class='const'>String</span><span class='rparen'>)</span>
|
|
138
|
+
<span class='period'>.</span><span class='id identifier rubyid_and_then_wt'>and_then_wt</span><span class='lparen'>(</span><span class='const'>String</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_n'>n</span><span class='op'>|</span>
|
|
139
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_n'>n</span> <span class='op'><</span> <span class='int'>2</span>
|
|
140
|
+
<span class='const'><span class='object_link'><a href="Mangrove.html" title="Mangrove (module)">Mangrove</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Mangrove/Result.html" title="Mangrove::Result (module)">Result</a></span></span><span class='period'>.</span><span class='id identifier rubyid_ok'><span class='object_link'><a href="Mangrove/Result.html#ok-class_method" title="Mangrove::Result.ok (method)">ok</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>`</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_n'>n</span><span class='embexpr_end'>}</span><span class='tstring_content'>` < 2</span><span class='tstring_end'>"</span></span><span class='comma'>,</span> <span class='const'>String</span><span class='rparen'>)</span>
|
|
141
|
+
<span class='kw'>else</span>
|
|
142
|
+
<span class='const'><span class='object_link'><a href="Mangrove.html" title="Mangrove (module)">Mangrove</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Mangrove/Result.html" title="Mangrove::Result (module)">Result</a></span></span><span class='period'>.</span><span class='id identifier rubyid_err'><span class='object_link'><a href="Mangrove/Result.html#err-class_method" title="Mangrove::Result.err (method)">err</a></span></span><span class='lparen'>(</span><span class='const'>String</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>not `</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_n'>n</span><span class='embexpr_end'>}</span><span class='tstring_content'>` < 2</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span>
|
|
143
|
+
<span class='kw'>end</span>
|
|
144
|
+
<span class='rbrace'>}</span>
|
|
145
|
+
<span class='period'>.</span><span class='id identifier rubyid_map_err_wt'>map_err_wt</span><span class='lparen'>(</span><span class='const'>MyServiceError</span><span class='op'>::</span><span class='const'>E1</span><span class='rparen'>)</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_e'>e</span><span class='op'>|</span>
|
|
146
|
+
<span class='const'>MyServiceError</span><span class='op'>::</span><span class='const'>E1</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='const'>MyAppError</span><span class='op'>::</span><span class='const'>E1</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>"</span><span class='tstring_content'>mapping to E1 </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_e'>e</span><span class='embexpr_end'>}</span><span class='tstring_end'>"</span></span><span class='rparen'>)</span><span class='rparen'>)</span>
|
|
147
|
+
<span class='rbrace'>}</span>
|
|
148
|
+
<span class='period'>.</span><span class='id identifier rubyid_map_ok'>map_ok</span> <span class='lbrace'>{</span> <span class='op'>|</span><span class='id identifier rubyid_str'>str</span><span class='op'>|</span>
|
|
149
|
+
<span class='lbrace'>{</span>
|
|
150
|
+
<span class='label'>my_key:</span> <span class='id identifier rubyid_str'>str</span>
|
|
151
|
+
<span class='rbrace'>}</span>
|
|
152
|
+
<span class='rbrace'>}</span>
|
|
153
|
+
<span class='period'>.</span><span class='id identifier rubyid_map_ok'>map_ok</span><span class='lparen'>(</span><span class='op'>&</span><span class='symbol'>:to_s</span><span class='rparen'>)</span>
|
|
154
|
+
<span class='kw'>else</span>
|
|
155
|
+
<span class='const'><span class='object_link'><a href="Mangrove.html" title="Mangrove (module)">Mangrove</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Mangrove/Result.html" title="Mangrove::Result (module)">Result</a></span></span><span class='period'>.</span><span class='id identifier rubyid_err'><span class='object_link'><a href="Mangrove/Result.html#err-class_method" title="Mangrove::Result.err (method)">err</a></span></span><span class='lparen'>(</span><span class='const'>String</span><span class='comma'>,</span> <span class='const'>MyServiceError</span><span class='op'>::</span><span class='const'>E2</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='lparen'>(</span><span class='const'>MyAppError</span><span class='op'>::</span><span class='const'>E2</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span><span class='rparen'>)</span><span class='rparen'>)</span>
|
|
156
|
+
<span class='kw'>end</span>
|
|
157
|
+
<span class='rbrace'>}</span>
|
|
158
|
+
<span class='kw'>end</span>
|
|
159
|
+
<span class='kw'>end</span>
|
|
160
|
+
</code></pre>
|
|
161
|
+
|
|
92
162
|
<p>Other examples are available at href="https://github.com/kazzix14/mangrove/tree/main/spec"></a>.</p>
|
|
93
163
|
|
|
94
164
|
<h2 id="label-Features">Features</h2>
|
|
@@ -113,7 +183,7 @@
|
|
|
113
183
|
|
|
114
184
|
<h2 id="label-Usage">Usage</h2>
|
|
115
185
|
|
|
116
|
-
<p
|
|
186
|
+
<p><a href="https://kazzix14.github.io/mangrove/">Documentation is available here</a>. For more concrete examples, see href="https://github.com/kazzix14/mangrove/tree/main/spec"></a>.</p>
|
|
117
187
|
|
|
118
188
|
<pre class="code ruby"><code class="ruby"><span class='const'><span class='object_link'><a href="Mangrove.html" title="Mangrove (module)">Mangrove</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Mangrove/Result.html" title="Mangrove::Result (module)">Result</a></span></span><span class='lbracket'>[</span><span class='const'>OkType</span><span class='comma'>,</span> <span class='const'>ErrType</span><span class='rbracket'>]</span>
|
|
119
189
|
<span class='const'><span class='object_link'><a href="Mangrove.html" title="Mangrove (module)">Mangrove</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Mangrove/Result.html" title="Mangrove::Result (module)">Result</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Mangrove/Result/Ok.html" title="Mangrove::Result::Ok (class)">Ok</a></span></span><span class='lbracket'>[</span><span class='const'>OkType</span><span class='comma'>,</span> <span class='const'>ErrType</span><span class='rbracket'>]</span>
|
|
@@ -132,7 +202,7 @@
|
|
|
132
202
|
</span><span class='id identifier rubyid_include'>include</span> <span class='const'><span class='object_link'><a href="Mangrove.html" title="Mangrove (module)">Mangrove</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Mangrove/ControlFlow.html" title="Mangrove::ControlFlow (module)">ControlFlow</a></span></span><span class='op'>::</span><span class='const'>Handler</span>
|
|
133
203
|
</code></pre>
|
|
134
204
|
|
|
135
|
-
<h2 id="label-Commands">Commands</h2>
|
|
205
|
+
<h2 id="label-Commands+for+Development">Commands for Development</h2>
|
|
136
206
|
|
|
137
207
|
<pre class="code ruby"><code class="ruby">git config core.hooksPath hooks
|
|
138
208
|
bundle exec tapioca init
|
|
@@ -162,7 +232,7 @@ rake release
|
|
|
162
232
|
</div></div>
|
|
163
233
|
|
|
164
234
|
<div id="footer">
|
|
165
|
-
Generated on Tue Oct 31 12:
|
|
235
|
+
Generated on Tue Oct 31 12:15:12 2023 by
|
|
166
236
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
167
237
|
0.9.34 (ruby-3.2.2).
|
|
168
238
|
</div>
|
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
</div>
|
|
101
101
|
|
|
102
102
|
<div id="footer">
|
|
103
|
-
Generated on Tue Oct 31 12:
|
|
103
|
+
Generated on Tue Oct 31 12:15:12 2023 by
|
|
104
104
|
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
|
105
105
|
0.9.34 (ruby-3.2.2).
|
|
106
106
|
</div>
|
data/lib/mangrove/version.rb
CHANGED