mangrove 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +10 -0
- data/README.md +58 -14
- data/Rakefile +16 -3
- data/docs/Mangrove/ControlFlow/ControlSignal.html +223 -0
- data/docs/Mangrove/ControlFlow/Handler/ClassMethods.html +563 -0
- data/docs/Mangrove/ControlFlow/Handler.html +139 -0
- data/docs/Mangrove/ControlFlow/Rewriter.html +331 -0
- data/docs/Mangrove/ControlFlow.html +254 -0
- data/docs/Mangrove/Option/ControlSignal.html +434 -0
- data/docs/Mangrove/Option/None.html +889 -0
- data/docs/Mangrove/Option/Some.html +1019 -0
- data/docs/Mangrove/Option.html +853 -0
- data/docs/Mangrove/Result/ControlSignal.html +434 -0
- data/docs/Mangrove/Result/Err.html +953 -0
- data/docs/Mangrove/Result/Ok.html +927 -0
- data/docs/Mangrove/Result.html +889 -0
- data/docs/Mangrove.html +144 -0
- data/docs/_index.html +257 -0
- data/docs/class_list.html +51 -0
- data/docs/css/common.css +1 -0
- data/docs/css/full_list.css +58 -0
- data/docs/css/style.css +497 -0
- data/docs/file.README.html +176 -0
- data/docs/file_list.html +56 -0
- data/docs/frames.html +17 -0
- data/docs/index.html +176 -0
- data/docs/js/app.js +314 -0
- data/docs/js/full_list.js +216 -0
- data/docs/js/jquery.js +4 -0
- data/docs/method_list.html +595 -0
- data/docs/top-level-namespace.html +110 -0
- data/hooks/pre-push +2 -0
- data/lib/mangrove/control_flow/rewriter.rb +5 -2
- data/lib/mangrove/result.rb +46 -37
- data/lib/mangrove/version.rb +1 -1
- metadata +31 -2
@@ -0,0 +1,110 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
6
|
+
<title>
|
7
|
+
Top Level Namespace
|
8
|
+
|
9
|
+
— Documentation by YARD 0.9.34
|
10
|
+
|
11
|
+
</title>
|
12
|
+
|
13
|
+
<link rel="stylesheet" href="css/style.css" type="text/css" />
|
14
|
+
|
15
|
+
<link rel="stylesheet" href="css/common.css" type="text/css" />
|
16
|
+
|
17
|
+
<script type="text/javascript">
|
18
|
+
pathId = "";
|
19
|
+
relpath = '';
|
20
|
+
</script>
|
21
|
+
|
22
|
+
|
23
|
+
<script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
|
24
|
+
|
25
|
+
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
|
26
|
+
|
27
|
+
|
28
|
+
</head>
|
29
|
+
<body>
|
30
|
+
<div class="nav_wrap">
|
31
|
+
<iframe id="nav" src="class_list.html?1"></iframe>
|
32
|
+
<div id="resizer"></div>
|
33
|
+
</div>
|
34
|
+
|
35
|
+
<div id="main" tabindex="-1">
|
36
|
+
<div id="header">
|
37
|
+
<div id="menu">
|
38
|
+
|
39
|
+
<a href="_index.html">Index</a> »
|
40
|
+
|
41
|
+
|
42
|
+
<span class="title">Top Level Namespace</span>
|
43
|
+
|
44
|
+
</div>
|
45
|
+
|
46
|
+
<div id="search">
|
47
|
+
|
48
|
+
<a class="full_list_link" id="class_list_link"
|
49
|
+
href="class_list.html">
|
50
|
+
|
51
|
+
<svg width="24" height="24">
|
52
|
+
<rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
|
53
|
+
<rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
|
54
|
+
<rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
|
55
|
+
</svg>
|
56
|
+
</a>
|
57
|
+
|
58
|
+
</div>
|
59
|
+
<div class="clear"></div>
|
60
|
+
</div>
|
61
|
+
|
62
|
+
<div id="content"><h1>Top Level Namespace
|
63
|
+
|
64
|
+
|
65
|
+
|
66
|
+
</h1>
|
67
|
+
<div class="box_info">
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
</div>
|
80
|
+
|
81
|
+
<h2>Defined Under Namespace</h2>
|
82
|
+
<p class="children">
|
83
|
+
|
84
|
+
|
85
|
+
<strong class="modules">Modules:</strong> <span class='object_link'><a href="Mangrove.html" title="Mangrove (module)">Mangrove</a></span>
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
|
90
|
+
</p>
|
91
|
+
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
|
100
|
+
</div>
|
101
|
+
|
102
|
+
<div id="footer">
|
103
|
+
Generated on Thu Aug 31 15:04:25 2023 by
|
104
|
+
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
105
|
+
0.9.34 (ruby-3.2.2).
|
106
|
+
</div>
|
107
|
+
|
108
|
+
</div>
|
109
|
+
</body>
|
110
|
+
</html>
|
data/hooks/pre-push
ADDED
@@ -127,7 +127,7 @@ module Mangrove
|
|
127
127
|
end
|
128
128
|
|
129
129
|
def rescue_body_node
|
130
|
-
control_flow =
|
130
|
+
control_flow = Mangrove::ControlFlow::ControlSignal
|
131
131
|
|
132
132
|
::Parser::AST::Node.new(:resbody, [
|
133
133
|
::Parser::AST::Node.new(:array, [
|
@@ -143,7 +143,10 @@ module Mangrove
|
|
143
143
|
:Err
|
144
144
|
]),
|
145
145
|
:new,
|
146
|
-
::Parser::AST::Node.new(:
|
146
|
+
::Parser::AST::Node.new(:send, [
|
147
|
+
::Parser::AST::Node.new(:lvar, [:exception]),
|
148
|
+
:inner_value
|
149
|
+
])
|
147
150
|
])
|
148
151
|
])
|
149
152
|
end
|
data/lib/mangrove/result.rb
CHANGED
@@ -18,7 +18,48 @@ module Mangrove
|
|
18
18
|
OkType = type_member
|
19
19
|
ErrType = type_member
|
20
20
|
|
21
|
-
|
21
|
+
sig { abstract.params(other: BasicObject).returns(T::Boolean) }
|
22
|
+
def ==(other); end
|
23
|
+
|
24
|
+
sig { abstract.returns(T::Boolean) }
|
25
|
+
def ok?; end
|
26
|
+
|
27
|
+
sig { abstract.returns(T::Boolean) }
|
28
|
+
def err?; end
|
29
|
+
|
30
|
+
sig { abstract.returns(OkType) }
|
31
|
+
def unwrap!; end
|
32
|
+
|
33
|
+
sig { abstract.params(message: String).returns(OkType) }
|
34
|
+
def expect!(message); end
|
35
|
+
|
36
|
+
sig { abstract.params(block: T.proc.params(this: OkType).returns(Result[OkType, ErrType])).returns(Result[OkType, ErrType]) }
|
37
|
+
def map_ok(&block); end
|
38
|
+
|
39
|
+
sig { abstract.params(block: T.proc.params(this: ErrType).returns(Result[OkType, ErrType])).returns(Result[OkType, ErrType]) }
|
40
|
+
def map_err(&block); end
|
41
|
+
|
42
|
+
class << self
|
43
|
+
extend T::Sig
|
44
|
+
extend T::Generic
|
45
|
+
|
46
|
+
OkType = type_member
|
47
|
+
ErrType = type_member
|
48
|
+
|
49
|
+
sig { params(results: T::Enumerable[Mangrove::Result[OkType, ErrType]]).returns(Result[OkType, ErrType]) }
|
50
|
+
def from_results(results)
|
51
|
+
errs = results.filter(&:err?)
|
52
|
+
|
53
|
+
if errs.empty?
|
54
|
+
# This is safe as errs is empty.
|
55
|
+
Result::Ok.new(results.map { |r| T.cast(r, Result::Ok[OkType, ErrType]).ok_inner })
|
56
|
+
else
|
57
|
+
# This is safe as errs is results where err? is true
|
58
|
+
Result::Err.new(errs.map { |r| T.cast(r, Result::Err[OkType, ErrType]).err_inner })
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
22
63
|
class Ok
|
23
64
|
extend T::Sig
|
24
65
|
extend T::Generic
|
@@ -78,7 +119,6 @@ module Mangrove
|
|
78
119
|
end
|
79
120
|
end
|
80
121
|
|
81
|
-
# Mangrove::Result::Err
|
82
122
|
class Err
|
83
123
|
extend T::Sig
|
84
124
|
extend T::Generic
|
@@ -113,12 +153,12 @@ module Mangrove
|
|
113
153
|
|
114
154
|
sig { override.returns(OkType) }
|
115
155
|
def unwrap!
|
116
|
-
raise Result::ControlSignal,
|
156
|
+
raise Result::ControlSignal, @inner
|
117
157
|
end
|
118
158
|
|
119
159
|
sig { override.params(message: String).returns(OkType) }
|
120
160
|
def expect!(message)
|
121
|
-
raise Result::ControlSignal,
|
161
|
+
raise Result::ControlSignal, message
|
122
162
|
end
|
123
163
|
|
124
164
|
sig { override.returns(T::Boolean) }
|
@@ -127,46 +167,15 @@ module Mangrove
|
|
127
167
|
sig { override.returns(T::Boolean) }
|
128
168
|
def err? = true
|
129
169
|
|
130
|
-
sig
|
131
|
-
override.params(_block: T.proc.params(this: OkType).returns(Result[OkType, ErrType])).returns(Result[OkType, ErrType])
|
132
|
-
end
|
170
|
+
sig { override.params(_block: T.proc.params(this: OkType).returns(Result[OkType, ErrType])).returns(Result[OkType, ErrType]) }
|
133
171
|
def map_ok(&_block)
|
134
172
|
self
|
135
173
|
end
|
136
174
|
|
137
|
-
sig
|
138
|
-
override.params(block: T.proc.params(this: ErrType).returns(Result[OkType, ErrType])).returns(Result[OkType, ErrType])
|
139
|
-
end
|
175
|
+
sig { override.params(block: T.proc.params(this: ErrType).returns(Result[OkType, ErrType])).returns(Result[OkType, ErrType]) }
|
140
176
|
def map_err(&block)
|
141
177
|
block.call(@inner)
|
142
178
|
end
|
143
179
|
end
|
144
|
-
|
145
|
-
sig { abstract.params(other: BasicObject).returns(T::Boolean) }
|
146
|
-
def ==(other); end
|
147
|
-
|
148
|
-
sig { abstract.returns(T::Boolean) }
|
149
|
-
def ok?; end
|
150
|
-
|
151
|
-
sig { abstract.returns(T::Boolean) }
|
152
|
-
def err?; end
|
153
|
-
|
154
|
-
sig { abstract.returns(OkType) }
|
155
|
-
def unwrap!; end
|
156
|
-
|
157
|
-
sig { abstract.params(message: String).returns(OkType) }
|
158
|
-
def expect!(message); end
|
159
|
-
|
160
|
-
sig do
|
161
|
-
abstract.params(block: T.proc.params(this: OkType).returns(Result[OkType,
|
162
|
-
ErrType])).returns(Result[OkType, ErrType])
|
163
|
-
end
|
164
|
-
def map_ok(&block); end
|
165
|
-
|
166
|
-
sig do
|
167
|
-
abstract.params(block: T.proc.params(this: ErrType).returns(Result[OkType,
|
168
|
-
ErrType])).returns(Result[OkType, ErrType])
|
169
|
-
end
|
170
|
-
def map_err(&block); end
|
171
180
|
end
|
172
181
|
end
|
data/lib/mangrove/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mangrove
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kazuma Murata
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-08-
|
11
|
+
date: 2023-08-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sorbet-runtime
|
@@ -77,6 +77,35 @@ files:
|
|
77
77
|
- LICENSE
|
78
78
|
- README.md
|
79
79
|
- Rakefile
|
80
|
+
- docs/Mangrove.html
|
81
|
+
- docs/Mangrove/ControlFlow.html
|
82
|
+
- docs/Mangrove/ControlFlow/ControlSignal.html
|
83
|
+
- docs/Mangrove/ControlFlow/Handler.html
|
84
|
+
- docs/Mangrove/ControlFlow/Handler/ClassMethods.html
|
85
|
+
- docs/Mangrove/ControlFlow/Rewriter.html
|
86
|
+
- docs/Mangrove/Option.html
|
87
|
+
- docs/Mangrove/Option/ControlSignal.html
|
88
|
+
- docs/Mangrove/Option/None.html
|
89
|
+
- docs/Mangrove/Option/Some.html
|
90
|
+
- docs/Mangrove/Result.html
|
91
|
+
- docs/Mangrove/Result/ControlSignal.html
|
92
|
+
- docs/Mangrove/Result/Err.html
|
93
|
+
- docs/Mangrove/Result/Ok.html
|
94
|
+
- docs/_index.html
|
95
|
+
- docs/class_list.html
|
96
|
+
- docs/css/common.css
|
97
|
+
- docs/css/full_list.css
|
98
|
+
- docs/css/style.css
|
99
|
+
- docs/file.README.html
|
100
|
+
- docs/file_list.html
|
101
|
+
- docs/frames.html
|
102
|
+
- docs/index.html
|
103
|
+
- docs/js/app.js
|
104
|
+
- docs/js/full_list.js
|
105
|
+
- docs/js/jquery.js
|
106
|
+
- docs/method_list.html
|
107
|
+
- docs/top-level-namespace.html
|
108
|
+
- hooks/pre-push
|
80
109
|
- lib/mangrove.rb
|
81
110
|
- lib/mangrove/control_flow.rb
|
82
111
|
- lib/mangrove/control_flow/control_signal.rb
|