errgonomic 0.6.0 → 0.7.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/gemset.nix +1 -1
- data/lib/errgonomic/result.rb +35 -0
- data/lib/errgonomic/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1490dc9d568769e95cc3d584907bf7a4bffb1af0381de3e4ce9a141736133166
|
|
4
|
+
data.tar.gz: 75fe0c80ad6ee5067aa8cce76c78f293e22ca1019b9d3415c57688c9c64ec2b9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 836b910b35ffd4bef2e78a7e5f72548e952a3da57f2e7642baaeeae1ba7bf93992f09b62baca76f2918836621f2dfa5780bfc56beea9c359d38d0154ae601286
|
|
7
|
+
data.tar.gz: 1fd7d78dcebdbc6eda3f54471f5e7f41c9f2f2db718ee7885489de16d9fbdbe42bf00ae842f171a32067f187abd26e7d6d93c1cb3422d893805f6c2716b7eb67
|
data/gemset.nix
CHANGED
data/lib/errgonomic/result.rb
CHANGED
|
@@ -250,6 +250,17 @@ module Errgonomic
|
|
|
250
250
|
Ok(block.call(value))
|
|
251
251
|
end
|
|
252
252
|
|
|
253
|
+
# Map the Err(e) to an Err(f), preserving the Ok
|
|
254
|
+
#
|
|
255
|
+
# @example
|
|
256
|
+
# Ok(:Alice).map_err { |_e| :Bob } # => Ok(:Alice)
|
|
257
|
+
# Err(:bob).map_err { |e| e.capitalize } # => Err(:Bob)
|
|
258
|
+
def map_err(&block)
|
|
259
|
+
return self if ok?
|
|
260
|
+
|
|
261
|
+
Err(block.call(value))
|
|
262
|
+
end
|
|
263
|
+
|
|
253
264
|
# Refuse to serialize an unwrapped Result as a String. Results must be
|
|
254
265
|
# correctly handled to access their inner value.
|
|
255
266
|
#
|
|
@@ -271,6 +282,30 @@ module Errgonomic
|
|
|
271
282
|
def to_json(*_args)
|
|
272
283
|
raise Errgonomic::SerializeError, 'cannot serialize an unwrapped Result'
|
|
273
284
|
end
|
|
285
|
+
|
|
286
|
+
# @example simple pattern match with variable capture of the value
|
|
287
|
+
# result = Errgonomic::Result::Ok.new(1)
|
|
288
|
+
# case result
|
|
289
|
+
# in Errgonomic::Result::Ok, value
|
|
290
|
+
# "Measurement is #{value}"
|
|
291
|
+
# in Errgonomic::Result::Err, err
|
|
292
|
+
# "Measurement is not available"
|
|
293
|
+
# end # => "Measurement is 1"
|
|
294
|
+
#
|
|
295
|
+
# @example more advanced pattern match against the kind of value
|
|
296
|
+
# result = Errgonomic::Result::Err.new(StandardError.new("nope"))
|
|
297
|
+
# case result
|
|
298
|
+
# in Errgonomic::Result::Ok, value
|
|
299
|
+
# "Measurement is #{value}"
|
|
300
|
+
# in Errgonomic::Result::Err, String => msg
|
|
301
|
+
# "Measurement failed with a message: #{msg}"
|
|
302
|
+
# in Errgonomic::Result::Err, Exception => e
|
|
303
|
+
# "Measurement produced an exception -- #{e.class}: #{e}"
|
|
304
|
+
# end # => "Measurement produced an exception -- StandardError: nope"
|
|
305
|
+
def deconstruct
|
|
306
|
+
[self, value]
|
|
307
|
+
end
|
|
308
|
+
|
|
274
309
|
end
|
|
275
310
|
|
|
276
311
|
# The Ok variant.
|
data/lib/errgonomic/version.rb
CHANGED