Class: Decoding::Decoders::MapErr
- Inherits:
-
Decoding::Decoder
- Object
- Decoding::Decoder
- Decoding::Decoders::MapErr
- Defined in:
- lib/decoding/decoders/map_err.rb
Overview
A decoder that replaces the error message of a decoder that failed, leaving successful results untouched.
Instance Method Summary collapse
- #call(value) ⇒ Decoding::Result<a>
-
#initialize(decoder) {|msg, value| ... } ⇒ MapErr
constructor
A new instance of MapErr.
Methods inherited from Decoding::Decoder
Constructor Details
#initialize(decoder) {|msg, value| ... } ⇒ MapErr
Returns a new instance of MapErr.
16 17 18 19 20 |
# File 'lib/decoding/decoders/map_err.rb', line 16 def initialize(decoder, &block) @decoder = decoder.to_decoder @block = block super() end |
Instance Method Details
#call(value) ⇒ Decoding::Result<a>
24 25 26 27 28 |
# File 'lib/decoding/decoders/map_err.rb', line 24 def call(value) @decoder.call(value).map_err { |f| f.map { @block.call(_1, value) } } rescue StandardError => e err(failure("error in map_err block: #{e.}")) end |