glepack
This Module provides functions to encode and decode MessagePack data
Functions
pub fn pack(value: Value) -> Result(BitArray, Nil)
Convert a Gleam value to MessagePack format.
This function takes any value that can be represented by data.Value
and
converts it to MessagePack binary format.
Examples
pack(data.Integer(42))
// -> Ok(<<42>>)
let map = dict.new() |> dict.insert(data.String("key"), data.String("value"))
pack(data.Map(map))
// -> Ok binary data representing the map
pub fn pack_strict(value: Value) -> BitArray
Convert a Gleam value to MessagePack format, raising an error if conversion fails.
This is similar to pack
but returns the binary data directly instead of a Result.
If encoding fails, this function will panic.
Examples
pack_strict(data.Integer(42))
// -> <<42>>
pub fn unpack(
input: BitArray,
) -> Result(#(Value, BitArray), DecodeError)
Decode a MessagePack binary into a Gleam value.
This function takes MessagePack formatted binary data and converts it
to a data.Value
type. It also returns the unconsumed portion of the input
if there are remaining bytes after decoding.
Examples
unpack(<<163, 102, 111, 111>>)
// -> Ok(#(data.String("foo"), <<>>))
pub fn unpack_exact(
input: BitArray,
) -> Result(Value, DecodeError)
Decode a complete MessagePack binary into a Gleam value.
Unlike unpack
, this function expects the input to contain exactly one
MessagePack value with no trailing data. If there are remaining bytes after
decoding, an error is returned.
Examples
unpack_exact(<<163, 102, 111, 111>>)
// -> Ok(data.String("foo"))
unpack_exact(<<163, 102, 111, 111, 192>>)
// -> Error(Nil) because there is a remaining byte
pub fn unpack_exact_strict(input: BitArray) -> Value
Decode a complete MessagePack binary, raising an error if decoding fails or if there is trailing data.
This is similar to unpack_exact
but returns the value directly instead of a Result.
If decoding fails or there is trailing data, this function will panic.
Examples
unpack_exact_strict(<<163, 102, 111, 111>>)
// -> data.String("foo")
pub fn unpack_strict(input: BitArray) -> #(Value, BitArray)
Decode a MessagePack binary into a Gleam value, raising an error if decoding fails.
This is similar to unpack
but returns the value directly instead of a Result.
If decoding fails, this function will panic.
Examples
unpack_strict(<<163, 102, 111, 111>>)
// -> #(data.String("foo"), <<>>)