Class: Decoding::Decoders::Array

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

Overview

Decode an array where all values match a given decoder.

See Also:

Instance Method Summary collapse

Methods inherited from Decoding::Decoder

#failure, #to_decoder

Constructor Details

#initialize(decoder) ⇒ Array

Returns a new instance of Array.

Parameters:



13
14
15
16
# File 'lib/decoding/decoders/array.rb', line 13

def initialize(decoder)
  @decoder = decoder.to_decoder
  super()
end

Instance Method Details

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

Parameters:

  • value (Object)

Returns:



20
21
22
23
24
25
26
27
28
29
# File 'lib/decoding/decoders/array.rb', line 20

def call(value)
  if value.is_a?(::Array)
    value
      .each_with_index
      .map { |v, i| @decoder.call(v).map_err { _1.push(i) } }
      .then { all _1 }
  else
    err("expected an Array, got: #{value.class}")
  end
end