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.
@@ -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
+ &mdash; 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> &raquo;
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
@@ -0,0 +1,2 @@
1
+ #! /bin/sh
2
+ bundle exec rake
@@ -127,7 +127,7 @@ module Mangrove
127
127
  end
128
128
 
129
129
  def rescue_body_node
130
- control_flow = StandardError
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(:lvar, [:exception])
146
+ ::Parser::AST::Node.new(:send, [
147
+ ::Parser::AST::Node.new(:lvar, [:exception]),
148
+ :inner_value
149
+ ])
147
150
  ])
148
151
  ])
149
152
  end
@@ -18,7 +18,48 @@ module Mangrove
18
18
  OkType = type_member
19
19
  ErrType = type_member
20
20
 
21
- # Mangrove::Result::Ok
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, Result::Err.new("called `Result#unwrap!` on an `Err` value: #{self}")
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, Result::Err.new(message)
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 do
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 do
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
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Mangrove
5
- VERSION = "0.3.0"
5
+ VERSION = "0.5.0"
6
6
  end
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.3.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-25 00:00:00.000000000 Z
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