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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 27f3199cc234c62d6d3905e82878a1a1256d4d3d6274b0ad72ed5ebecfa52ef1
4
- data.tar.gz: 927b3c1de75c99ad29dd12f91e4c04df420c4786f24966900ef98e426efbd330
3
+ metadata.gz: 3d6d0e9800db396996eecc375574354d42930e986cee4bf4c1c7e2b424f05213
4
+ data.tar.gz: 64636fcd0b17e65102706310968c1a268bae66d37e666c1522bf5788f57b8f17
5
5
  SHA512:
6
- metadata.gz: 83476cb1be593db8e67f1b121944be82c4637371a7940e85cece9d86cff3532578dcf58c4fdc167dada7a3181fc32254100dfa2865c6479c15b46bd1a2ae1c39
7
- data.tar.gz: 1c85b816e4f4b9921e84521ee5348d4fc97bf5859c451e0d94812061861cb7b89caab303674e58cd9869c89aaaa70cd01139e06b09353eaa7ec0e48d312e2d08
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 [here](https://kazzix14.github.io/mangrove/).
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:03:29 2023 by
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:03:29 2023 by
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:03:31 2023 by
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:03:30 2023 by
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:03:29 2023 by
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>
@@ -1135,7 +1135,7 @@
1135
1135
  </div>
1136
1136
 
1137
1137
  <div id="footer">
1138
- Generated on Tue Oct 31 12:03:29 2023 by
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:03:31 2023 by
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:03:31 2023 by
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:03:30 2023 by
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>
@@ -2124,7 +2124,7 @@
2124
2124
  </div>
2125
2125
 
2126
2126
  <div id="footer">
2127
- Generated on Tue Oct 31 12:03:29 2023 by
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'>&quot;</span><span class='tstring_content'>0.15.0</span><span class='tstring_end'>&quot;</span></span></pre></dd>
121
+ <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>0.15.1</span><span class='tstring_end'>&quot;</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:03:29 2023 by
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:03:29 2023 by
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>
@@ -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.</p>
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'>&quot;</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'>&quot;</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'>&quot;</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'>&quot;</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'>&quot;</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'>&quot;</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'>&lt;</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'>&quot;</span><span class='tstring_content'>num &lt; 1</span><span class='tstring_end'>&quot;</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'>&lt;</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'>&lt;</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'>&quot;</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'>` &lt; 2</span><span class='tstring_end'>&quot;</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'>&quot;</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'>` &lt; 2</span><span class='tstring_end'>&quot;</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'>&quot;</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'>&quot;</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'>&amp;</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>Documentation is available <a href="https://kazzix14.github.io/mangrove/">here</a>. For more concrete examples, see href="https://github.com/kazzix14/mangrove/tree/main/spec"></a>.</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:03:29 2023 by
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.</p>
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'>&quot;</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'>&quot;</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'>&quot;</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'>&quot;</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'>&quot;</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'>&quot;</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'>&lt;</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'>&quot;</span><span class='tstring_content'>num &lt; 1</span><span class='tstring_end'>&quot;</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'>&lt;</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'>&lt;</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'>&quot;</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'>` &lt; 2</span><span class='tstring_end'>&quot;</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'>&quot;</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'>` &lt; 2</span><span class='tstring_end'>&quot;</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'>&quot;</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'>&quot;</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'>&amp;</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>Documentation is available <a href="https://kazzix14.github.io/mangrove/">here</a>. For more concrete examples, see href="https://github.com/kazzix14/mangrove/tree/main/spec"></a>.</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:03:29 2023 by
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:03:29 2023 by
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>
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Mangrove
5
- VERSION = "0.15.0"
5
+ VERSION = "0.15.1"
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mangrove
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.0
4
+ version: 0.15.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kazuma Murata