mangrove 0.30.1 → 0.31.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 71226a1d7d1fb7eba306e5838de3bb3f0558c5ecaaf765c4f598fbeac1177e5c
4
- data.tar.gz: abce827cd50183555927cf71dbd87d04d2e42273ac71c2eeee6e7d14307ba95c
3
+ metadata.gz: 5f834b6984567df445825c79b6027e0259d955c082aa68bbfbd7dc6ac1cf7e40
4
+ data.tar.gz: 989be7ac4cd2fab0ccf154785ab19560dd0133b51b76880d2e1ce281e638ea83
5
5
  SHA512:
6
- metadata.gz: 973e7abe2127c628b8fd3172f62d82103c571910269b6a0256bb6f405ae29eefbd4779bcef569369a5ab79b5a8fc1709c6ef5190f9b2af26be04eb9a8a377d39
7
- data.tar.gz: 8daf78cf239f11cd7bf83efad79dfe163f42953dc7d9be08e1bf0dc6a5976db6630f5c5b037062bc2acabe69c568737819adeaea158b42b0d91188006399910b
6
+ metadata.gz: 8b4fe3703902f7f2c566f3789c3d2cc2e8ee4d02d2591bcedfa3425319af3da86d215c63ab6dfd5ba79826ff07f7f4ab4c33f8d33560eb2378a14a9a132e7030
7
+ data.tar.gz: fc2b7c8ad55cd4052b25837c64e20573b2ed0446871cb2f1c3a9d8dcd554224c44848256f0c2f9752161dfb54d7e6fcd5740d2a854aaff1117fa7e30fda80eeb
data/README.md CHANGED
@@ -24,8 +24,8 @@ For more concrete examples, see [`spec/**/**_spec.rb`](https://github.com/kazzix
24
24
 
25
25
  ```ruby
26
26
  Mangrove::Result[OkType, ErrType]
27
- Mangrove::Result::Ok[OkType, ErrType]
28
- Mangrove::Result::Err[OkType, ErrType]
27
+ Mangrove::Result::Ok[OkType]
28
+ Mangrove::Result::Err[ErrType]
29
29
  Mangrove::Option[InnerType]
30
30
  Mangrove::Option::Some[InnerType]
31
31
  Mangrove::Option::None[InnerType]
@@ -66,6 +66,12 @@ module Mangrove
66
66
  sig { abstract.type_parameters(:NewErrType).params(_t_new_err: T::Class[T.type_parameter(:NewErrType)], block: T.proc.params(this: ErrType).returns(T.type_parameter(:NewErrType))).returns(Result[OkType, T.type_parameter(:NewErrType)]) }
67
67
  def map_err_wt(_t_new_err, &block); end
68
68
 
69
+ sig { abstract.params(block: T.proc.params(this: OkType).void).returns(Result[OkType, ErrType]) }
70
+ def tap_ok(&block); end
71
+
72
+ sig { abstract.params(block: T.proc.params(this: ErrType).void).returns(Result[OkType, ErrType]) }
73
+ def tap_err(&block); end
74
+
69
75
  sig { abstract.type_parameters(:NewOkType, :NewErrType).params(other: Result[T.type_parameter(:NewOkType), T.type_parameter(:NewErrType)]).returns(T.any(Result[T.type_parameter(:NewOkType), T.type_parameter(:NewErrType)], Result[T.type_parameter(:NewOkType), ErrType])) }
70
76
  def and(other); end
71
77
 
@@ -256,6 +262,17 @@ module Mangrove
256
262
  self
257
263
  end
258
264
 
265
+ sig { override.params(block: T.proc.params(this: OkType).void).returns(Result[OkType, ErrType]) }
266
+ def tap_ok(&block)
267
+ block.call(@inner)
268
+ self
269
+ end
270
+
271
+ sig { override.params(_block: T.proc.params(this: ErrType).void).returns(Result[OkType, ErrType]) }
272
+ def tap_err(&_block)
273
+ self
274
+ end
275
+
259
276
  sig { override.type_parameters(:NewOkType, :NewErrType).params(other: Result[T.type_parameter(:NewOkType), T.type_parameter(:NewErrType)]).returns(Result[T.type_parameter(:NewOkType), T.type_parameter(:NewErrType)]) }
260
277
  def and(other)
261
278
  other
@@ -429,6 +446,17 @@ module Mangrove
429
446
  Result::Err[T.type_parameter(:NewErrType)].new(block.call(@inner))
430
447
  end
431
448
 
449
+ sig { override.params(_block: T.proc.params(this: OkType).void).returns(Result[OkType, ErrType]) }
450
+ def tap_ok(&_block)
451
+ self
452
+ end
453
+
454
+ sig { override.params(block: T.proc.params(this: ErrType).void).returns(Result[OkType, ErrType]) }
455
+ def tap_err(&block)
456
+ block.call(@inner)
457
+ self
458
+ end
459
+
432
460
  sig { override.type_parameters(:NewOkType, :NewErrType).params(_other: Result[T.type_parameter(:NewOkType), T.type_parameter(:NewErrType)]).returns(Result[T.type_parameter(:NewOkType), ErrType]) }
433
461
  def and(_other)
434
462
  self
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Mangrove
5
- VERSION = "0.30.1"
5
+ VERSION = "0.31.0"
6
6
  end
@@ -48,7 +48,13 @@ module Tapioca
48
48
  inner_type
49
49
  }
50
50
 
51
- constant_type.create_method("inner", return_type: "T.any(#{inner_types.join(", ")})")
51
+ return_type = if inner_types.size == 1
52
+ T.must(inner_types.first)
53
+ else
54
+ "T.any(#{inner_types.join(", ")})"
55
+ end
56
+
57
+ constant_type.create_method("inner", return_type:)
52
58
  constant_type.create_method("as_super", return_type: constant.name.to_s)
53
59
  constant_type.sort_nodes!
54
60
  }
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.30.1
4
+ version: 0.31.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: 2024-06-06 00:00:00.000000000 Z
11
+ date: 2024-11-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sorbet-runtime
@@ -132,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
132
132
  - !ruby/object:Gem::Version
133
133
  version: '0'
134
134
  requirements: []
135
- rubygems_version: 3.5.9
135
+ rubygems_version: 3.5.22
136
136
  signing_key:
137
137
  specification_version: 4
138
138
  summary: Toolkit for leveraging Sorbet's type system.