gbor

Package Version Hex Docs

A CBOR encoding/decoding library for Gleam.

Installation

Add GitHub

[dependencies]
gbor = { git = "git@github.com:Beaudidly/gbor.git", ref = "main" }

Usage

Please check out the encode/decode tests.

Encode

import gbor
import gleam/list

type Cat {
  Cat(name: String, lives: Int, nicknames: List(String))
}

fn cat_encoder(cat: Cat) -> BitArray {
  encode.map([
    #(encode.string("name"), encode.string(cat.name)),
    #(encode.string("lives"), encode.int(cat.lives)),
    #(
      encode.string("nicknames"),
      encode.array(list.map(cat.nicknames, encode.string)),
    ),
  ])
  |> encode.to_bit_array
}

Decode

import gbor
import gleam/dynamic/decode as dy_decode

fn decode_cat(data: BitArray) -> Result(Cat, List(dy_decode.DecodeError)) {
  let cat_decoder = {
    use name <- dy_decode.field("name", dy_decode.string)
    use lives <- dy_decode.field("lives", dy_decode.int)
    use nicknames <- dy_decode.field(
      "nicknames",
      dy_decode.list(dy_decode.string),
    )
    dy_decode.success(Cat(name:, lives:, nicknames:))
  }

  decode.parse(from: data, using: cat_decoder)
}

Development

gleam test  # Run the tests
Search Document