Class: Decoding::Decoders::AndThen

Inherits:
Decoding::Decoder show all
Defined in:
lib/decoding/decoders/and_then.rb

Overview

Create a decoder that depends on a previously decoded value.

See Also:

Instance Method Summary collapse

Methods inherited from Decoding::Decoder

#failure, #to_decoder

Constructor Details

#initialize(decoder) {|| ... } ⇒ Decoding::Decoder<b>

Parameters:

Yield Parameters:

  • (a)

Yield Returns:



15
16
17
18
19
# File 'lib/decoding/decoders/and_then.rb', line 15

def initialize(decoder, &block)
  @decoder = decoder.to_decoder
  @block = block
  super()
end

Instance Method Details

#call(value) ⇒ Decoding::Result<b>

Parameters:

  • value (Object)

Returns:



23
24
25
26
27
28
29
# File 'lib/decoding/decoders/and_then.rb', line 23

def call(value)
  @decoder.call(value).and_then do |decoded_value|
    @block.call(decoded_value).call(value)
  end
rescue StandardError => e
  err(failure("error in and_then block: #{e.message}"))
end