mangrove 0.15.0 → 0.15.1
Sign up to get free protection for your applications and to get access to all the features.
- 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