mangrove 0.1.0 → 0.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b5d153e07f630102b67bf06ae910d39fd063ec6d29237ad555f33b5068837a54
4
- data.tar.gz: 002d2fbd0168c3b0fcac8effea4455918a6a8845d124d8303e480accb2f5d634
3
+ metadata.gz: 9289ae193acf40ac02f9fd2c1abfaa21e9a2eaa99367ba37f12508fe86b37b7a
4
+ data.tar.gz: 21c2c5271f29b8b93bb7f9658c03c6edfb213d12eb02a8b06b0e520e75ab825a
5
5
  SHA512:
6
- metadata.gz: 26c16d1c8e83204252284f47381e6e9d9a517ba8a4b0b84ccbf65f645b0cc42f7fb3331e90a216b2490549bb409e0dc08e7942b15897bb9e9f1020f75a4ec130
7
- data.tar.gz: 2f52b60822834d12e1c669b34088223f57bcc575b5bf2a9adf9bc25286a91e8e2e456d71415e1ee0e947455cebc1beacd8f079e296148cf13fbfa09b7aa20f25
6
+ metadata.gz: 7bfa222f9fa0e262315f6cd30fd0e1798222450abc14fbb5aa442d2027c58e19e906a37a88f4f2018359c979272d61f05741327beb7f36b216047176ade02ba3
7
+ data.tar.gz: 7be4b82b310e40005f171ee72f2513fa70e4e19038513814c7d0195c0c50aa51e720b5a82ec1dd15b8066197461c5f93b0e8fe16d87c572cb37b9c9b007ee545
data/.rubocop.yml CHANGED
@@ -12,6 +12,9 @@ Layout/LineLength:
12
12
  Metrics/AbcSize:
13
13
  Enabled: false
14
14
 
15
+ Metrics/BlockLength:
16
+ Enabled: false
17
+
15
18
  Metrics/ClassLength:
16
19
  Enabled: false
17
20
 
data/README.md CHANGED
@@ -41,6 +41,8 @@ bundle exec rubocop -DESP
41
41
  bundle exec srb typecheck
42
42
  bundle exec ordinare --check
43
43
  bundle exec ruboclean
44
+ rake build
45
+ rake release
44
46
  ```
45
47
 
46
48
  ## Development
@@ -46,6 +46,16 @@ module Mangrove
46
46
  end
47
47
  end
48
48
 
49
+ sig { returns(InnerType) }
50
+ def unwrap
51
+ @inner
52
+ end
53
+
54
+ sig { override.params(_default: InnerType).returns(InnerType) }
55
+ def unwrap_or(_default)
56
+ @inner
57
+ end
58
+
49
59
  sig { override.returns(InnerType) }
50
60
  def unwrap!
51
61
  @inner
@@ -56,6 +66,12 @@ module Mangrove
56
66
  @inner
57
67
  end
58
68
 
69
+ sig { override.returns(T::Boolean) }
70
+ def some? = true
71
+
72
+ sig { override.returns(T::Boolean) }
73
+ def none? = false
74
+
59
75
  sig { override.params(block: T.proc.params(inner: InnerType).returns(Option[InnerType])).returns(Option[InnerType]) }
60
76
  def map_some(&block)
61
77
  block.call(@inner)
@@ -95,6 +111,11 @@ module Mangrove
95
111
  end
96
112
  end
97
113
 
114
+ sig { override.params(default: InnerType).returns(InnerType) }
115
+ def unwrap_or(default)
116
+ default
117
+ end
118
+
98
119
  sig { override.returns(InnerType) }
99
120
  def unwrap!
100
121
  raise Option::ControlSignal, Result::Err.new("called `Option#unwrap!` on an `None` value: #{self}")
@@ -105,6 +126,12 @@ module Mangrove
105
126
  raise Option::ControlSignal, Result::Err.new(message)
106
127
  end
107
128
 
129
+ sig { override.returns(T::Boolean) }
130
+ def some? = false
131
+
132
+ sig { override.returns(T::Boolean) }
133
+ def none? = true
134
+
108
135
  sig { override.params(_block: T.proc.params(inner: InnerType).returns(Option[InnerType])).returns(Option::None[InnerType]) }
109
136
  def map_some(&_block)
110
137
  self
@@ -119,12 +146,21 @@ module Mangrove
119
146
  sig { abstract.params(other: BasicObject).returns(T::Boolean) }
120
147
  def ==(other); end
121
148
 
149
+ sig { abstract.params(default: InnerType).returns(InnerType) }
150
+ def unwrap_or(default); end
151
+
122
152
  sig { abstract.returns(InnerType) }
123
153
  def unwrap!; end
124
154
 
125
155
  sig { abstract.params(message: String).returns(InnerType) }
126
156
  def expect!(message); end
127
157
 
158
+ sig { abstract.returns(T::Boolean) }
159
+ def some?; end
160
+
161
+ sig { abstract.returns(T::Boolean) }
162
+ def none?; end
163
+
128
164
  sig { abstract.params(block: T.proc.params(inner: InnerType).returns(Option[InnerType])).returns(Option[InnerType]) }
129
165
  def map_some(&block); end
130
166
 
@@ -47,7 +47,7 @@ module Mangrove
47
47
  end
48
48
 
49
49
  sig { returns(OkType) }
50
- def unwrap
50
+ def ok_inner
51
51
  @inner
52
52
  end
53
53
 
@@ -106,6 +106,11 @@ module Mangrove
106
106
  end
107
107
  end
108
108
 
109
+ sig { returns(ErrType) }
110
+ def err_inner
111
+ @inner
112
+ end
113
+
109
114
  sig { override.returns(OkType) }
110
115
  def unwrap!
111
116
  raise Result::ControlSignal, Result::Err.new("called `Result#unwrap!` on an `Err` value: #{self}")
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Mangrove
5
- VERSION = "0.1.0"
5
+ VERSION = "0.3.0"
6
6
  end
data/lib/mangrove.rb CHANGED
@@ -2,7 +2,11 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  require "sorbet-runtime"
5
+
5
6
  require_relative "mangrove/version"
7
+ require_relative "mangrove/option"
8
+ require_relative "mangrove/result"
9
+ require_relative "mangrove/control_flow"
6
10
 
7
11
  # Mangrove
8
12
  module Mangrove; 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.1.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kazuma Murata
@@ -81,8 +81,6 @@ files:
81
81
  - lib/mangrove/control_flow.rb
82
82
  - lib/mangrove/control_flow/control_signal.rb
83
83
  - lib/mangrove/control_flow/rewriter.rb
84
- - lib/mangrove/interfaces.rb
85
- - lib/mangrove/mangrove.rb
86
84
  - lib/mangrove/option.rb
87
85
  - lib/mangrove/option/control_signal.rb
88
86
  - lib/mangrove/result.rb
@@ -1,8 +0,0 @@
1
- # typed: strict
2
- # frozen_string_literal: true
3
-
4
- module Mangrove
5
- module Interfaces
6
- require_relative "interfaces/control_signal"
7
- end
8
- end
@@ -1,35 +0,0 @@
1
- # typed: strict
2
- # frozen_string_literal: true
3
-
4
- # ==============================================================================
5
- # sorbet - tapioca - compilers - enumerize
6
- # ==============================================================================
7
- require "tapioca/dsl"
8
- require "sorbet-runtime"
9
- require "mangrove/control_flow"
10
-
11
- ::Method.prepend(T::CompatibilityPatches::MethodExtensions)
12
-
13
- module Tapioca
14
- module Compilers
15
- class Enumerize < Tapioca::Dsl::Compiler
16
- extend T::Sig
17
-
18
- ConstantType = type_member { { fixed: T.class_of(::Mangrove::ControlFlow::Handler) } }
19
-
20
- sig { override.returns(T::Enumerable[Module]) }
21
- def self.gather_constants
22
- all_classes.find_all { |c| c < ::Mangrove::ControlFlow::Handler }
23
- end
24
-
25
- sig { override.void }
26
- def decorate
27
- root.create_path(constant) do |klass|
28
- # constant.instance_variable_get(:@__mangrove_flow_controlled_method_names).each do |method_name|
29
- # klass.create_method(method_name, parameters: [create_rest_param("args", type: "T.untyped")], return_type: "T.untyped")
30
- # end
31
- end
32
- end
33
- end
34
- end
35
- end