mangrove 0.4.0 → 0.6.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 Fri Sep 1 17:32:57 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
@@ -82,6 +82,11 @@ module Mangrove
82
82
  self
83
83
  end
84
84
 
85
+ sig { override.type_parameters(:ErrType).params(_err: T.type_parameter(:ErrType)).returns(Mangrove::Result[InnerType, T.type_parameter(:ErrType)]) }
86
+ def transpose(_err)
87
+ Result::Ok.new(@inner)
88
+ end
89
+
85
90
  private
86
91
 
87
92
  sig { returns(InnerType) }
@@ -141,6 +146,11 @@ module Mangrove
141
146
  def map_none(&block)
142
147
  block.call
143
148
  end
149
+
150
+ sig { override.type_parameters(:ErrType).params(err: T.type_parameter(:ErrType)).returns(Mangrove::Result[InnerType, T.type_parameter(:ErrType)]) }
151
+ def transpose(err)
152
+ Result::Err.new(err)
153
+ end
144
154
  end
145
155
 
146
156
  sig { abstract.params(other: BasicObject).returns(T::Boolean) }
@@ -166,5 +176,8 @@ module Mangrove
166
176
 
167
177
  sig { abstract.params(block: T.proc.returns(Option[InnerType])).returns(Option[InnerType]) }
168
178
  def map_none(&block); end
179
+
180
+ sig { abstract.type_parameters(:ErrType).params(err: T.type_parameter(:ErrType)).returns(Mangrove::Result[InnerType, T.type_parameter(:ErrType)]) }
181
+ def transpose(err); end
169
182
  end
170
183
  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
@@ -137,26 +177,5 @@ module Mangrove
137
177
  block.call(@inner)
138
178
  end
139
179
  end
140
-
141
- sig { abstract.params(other: BasicObject).returns(T::Boolean) }
142
- def ==(other); end
143
-
144
- sig { abstract.returns(T::Boolean) }
145
- def ok?; end
146
-
147
- sig { abstract.returns(T::Boolean) }
148
- def err?; end
149
-
150
- sig { abstract.returns(OkType) }
151
- def unwrap!; end
152
-
153
- sig { abstract.params(message: String).returns(OkType) }
154
- def expect!(message); end
155
-
156
- sig { abstract.params(block: T.proc.params(this: OkType).returns(Result[OkType, ErrType])).returns(Result[OkType, ErrType]) }
157
- def map_ok(&block); end
158
-
159
- sig { abstract.params(block: T.proc.params(this: ErrType).returns(Result[OkType, ErrType])).returns(Result[OkType, ErrType]) }
160
- def map_err(&block); end
161
180
  end
162
181
  end
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Mangrove
5
- VERSION = "0.4.0"
5
+ VERSION = "0.6.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.4.0
4
+ version: 0.6.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-30 00:00:00.000000000 Z
11
+ date: 2023-09-01 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