getPredicateEncoder

Call Signature

function getPredicateEncoder<TFrom, TSize>(
    predicate,
    ifTrue,
    ifFalse,
): FixedSizeEncoder<TFrom, TSize>;

Returns an encoder that selects between two encoders based on a predicate.

This encoder uses a boolean predicate function to determine which of two encoders to use for a given value. If the predicate returns true, the ifTrue encoder is used; otherwise, the ifFalse encoder is used.

Type Parameters

Type ParameterDescription
TFromThe type of the value to encode.
TSize extends number-

Parameters

ParameterTypeDescription
predicate(value) => booleanA function that returns true or false for a given value.
ifTrueFixedSizeEncoder<TFrom, TSize>The encoder to use when the predicate returns true.
ifFalseFixedSizeEncoder<TFrom, TSize>The encoder to use when the predicate returns false.

Returns

FixedSizeEncoder<TFrom, TSize>

An Encoder based on the provided encoders.

Example

Encoding small and large numbers differently.

const encoder = getPredicateEncoder(
  (n: number) => n < 256,
  getU8Encoder(),
  getU32Encoder()
);
 
encoder.encode(42);
// 0x2a
//   └── Small number encoded as u8
 
encoder.encode(1000);
// 0xe8030000
//   └── Large number encoded as u32

See

getPredicateCodec

Call Signature

function getPredicateEncoder<TFrom>(
    predicate,
    ifTrue,
    ifFalse,
): FixedSizeEncoder<TFrom>;

Returns an encoder that selects between two encoders based on a predicate.

This encoder uses a boolean predicate function to determine which of two encoders to use for a given value. If the predicate returns true, the ifTrue encoder is used; otherwise, the ifFalse encoder is used.

Type Parameters

Type ParameterDescription
TFromThe type of the value to encode.

Parameters

ParameterTypeDescription
predicate(value) => booleanA function that returns true or false for a given value.
ifTrueFixedSizeEncoder<TFrom>The encoder to use when the predicate returns true.
ifFalseFixedSizeEncoder<TFrom>The encoder to use when the predicate returns false.

Returns

FixedSizeEncoder<TFrom>

An Encoder based on the provided encoders.

Example

Encoding small and large numbers differently.

const encoder = getPredicateEncoder(
  (n: number) => n < 256,
  getU8Encoder(),
  getU32Encoder()
);
 
encoder.encode(42);
// 0x2a
//   └── Small number encoded as u8
 
encoder.encode(1000);
// 0xe8030000
//   └── Large number encoded as u32

See

getPredicateCodec

Call Signature

function getPredicateEncoder<TFrom>(
    predicate,
    ifTrue,
    ifFalse,
): VariableSizeEncoder<TFrom>;

Returns an encoder that selects between two encoders based on a predicate.

This encoder uses a boolean predicate function to determine which of two encoders to use for a given value. If the predicate returns true, the ifTrue encoder is used; otherwise, the ifFalse encoder is used.

Type Parameters

Type ParameterDescription
TFromThe type of the value to encode.

Parameters

ParameterTypeDescription
predicate(value) => booleanA function that returns true or false for a given value.
ifTrueVariableSizeEncoder<TFrom>The encoder to use when the predicate returns true.
ifFalseVariableSizeEncoder<TFrom>The encoder to use when the predicate returns false.

Returns

VariableSizeEncoder<TFrom>

An Encoder based on the provided encoders.

Example

Encoding small and large numbers differently.

const encoder = getPredicateEncoder(
  (n: number) => n < 256,
  getU8Encoder(),
  getU32Encoder()
);
 
encoder.encode(42);
// 0x2a
//   └── Small number encoded as u8
 
encoder.encode(1000);
// 0xe8030000
//   └── Large number encoded as u32

See

getPredicateCodec

Call Signature

function getPredicateEncoder<TFrom>(
    predicate,
    ifTrue,
    ifFalse,
): Encoder<TFrom>;

Returns an encoder that selects between two encoders based on a predicate.

This encoder uses a boolean predicate function to determine which of two encoders to use for a given value. If the predicate returns true, the ifTrue encoder is used; otherwise, the ifFalse encoder is used.

Type Parameters

Type ParameterDescription
TFromThe type of the value to encode.

Parameters

ParameterTypeDescription
predicate(value) => booleanA function that returns true or false for a given value.
ifTrueEncoder<TFrom>The encoder to use when the predicate returns true.
ifFalseEncoder<TFrom>The encoder to use when the predicate returns false.

Returns

Encoder<TFrom>

An Encoder based on the provided encoders.

Example

Encoding small and large numbers differently.

const encoder = getPredicateEncoder(
  (n: number) => n < 256,
  getU8Encoder(),
  getU32Encoder()
);
 
encoder.encode(42);
// 0x2a
//   └── Small number encoded as u8
 
encoder.encode(1000);
// 0xe8030000
//   └── Large number encoded as u32

See

getPredicateCodec

On this page