Class: Decoding::Decoders::Succeed

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

Overview

A decoder that always succeeds with a predetermined value, ignoring any input. This is useful for providing default values or as a building block in decoder composition.

Note this is not the way to give a key a default value: combining it with Any would also swallow the failure of a key that is present but holds a value of the wrong type. Use OptionalField for that instead.

Examples:

Always return a fixed value

decode(Succeed.new(5), "anything") # => Decoding::Ok(5)

Use in conditional decoding

and_then(field("kind", string)) do |kind|
  kind == "none" ? Succeed.new(nil) : field("value", integer)
end

Instance Method Summary collapse

Methods inherited from Decoding::Decoder

#failure, #to_decoder

Constructor Details

#initialize(value) ⇒ Succeed

Returns a new instance of Succeed.

Parameters:

  • value (Object) —

    the value to always return



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

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

Instance Method Details

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

Parameters:

  • _value (Object) —

    ignored input

Returns:



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

def call(_value) = ok(@value)