Class: Decoding::Decoders::Fail

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

Overview

A decoder that always fails with a predetermined error message, ignoring any input. This is useful for signaling errors in conditional decoder composition, such as inside AndThen.

Examples:

Always fail with a message

decode(Fail.new("unsupported"), "anything")
# => Decoding::Err("unsupported")

Use in conditional decoding

and_then(field("version", integer)) do |version|
  case version
  when 1 then field("name", string)
  else Fail.new("unsupported version: #{version}")
  end
end

Instance Method Summary collapse

Methods inherited from Decoding::Decoder

#failure, #to_decoder

Constructor Details

#initialize(message) ⇒ Fail

Returns a new instance of Fail.

Parameters:

  • message (String)

    the error message to always return



24
25
26
27
# File 'lib/decoding/decoders/fail.rb', line 24

def initialize(message)
  @message = message
  super()
end

Instance Method Details

#call(_value) ⇒ Decoding::Result<Object>

Parameters:

  • _value (Object)

    ignored input

Returns:



31
# File 'lib/decoding/decoders/fail.rb', line 31

def call(_value) = err(failure(@message))