pont/serialize

Types

pub opaque type Context(t)
pub type Decoder(a) {
  Decoder(decoder: decode.Decoder(a), spec: spec.Spec)
}

Constructors

pub type Encoder(a) {
  Encoder(encoder: fn(a) -> value.Value, spec: spec.Spec)
}

Constructors

pub type EnumVariant(a) {
  EnumVariant(
    decoder: decode.Decoder(a),
    encoder: fn(a) -> Result(value.Value, Nil),
    spec: spec.Spec,
  )
}

Constructors

pub type RawDecoder(a) =
  decode.Decoder(a)
pub type RawEncoder(a) =
  fn(a) -> value.Value
pub type Serializer(a) {
  Serializer(
    decoder: decode.Decoder(a),
    encoder: fn(a) -> value.Value,
    spec: spec.Spec,
  )
}

Constructors

Values

pub fn bool() -> Serializer(Bool)
pub fn build(
  context: Context(t),
  value: t,
) -> decode.Decoder(#(Context(t), t))
pub fn decode(
  value: dynamic.Dynamic,
  serializer: Serializer(t),
) -> Result(t, List(decode.DecodeError))
pub fn decoder(serializer: Serializer(t)) -> Decoder(t)
pub fn empty_object() -> Serializer(Nil)
pub fn encode(
  value: t,
  of serializer: Serializer(t),
) -> value.Value
pub fn encode_json(
  a: a,
  of serializer: Serializer(a),
) -> json.Json

Directly encode a value using the given serializer to JSON.

pub fn encode_yaml(
  a: a,
  of serializer: Serializer(a),
) -> value.YamlValue

Directly encode a value using the given serializer to JSON.

pub fn encoder(serializer: Serializer(t)) -> Encoder(t)
pub fn enum(
  first: EnumVariant(t),
  or alternative: List(EnumVariant(t)),
) -> Serializer(t)
pub fn field(
  context context: Context(final),
  name name: String,
  serializer serializer: Serializer(t),
  getter getter: fn(final) -> t,
  next next: fn(Context(final), t) -> decode.Decoder(
    #(Context(final), final),
  ),
) -> decode.Decoder(#(Context(final), final))
pub fn float() -> Serializer(Float)
pub fn float_within(min: Float, max: Float) -> Serializer(Float)
pub fn indexed_field(
  context context: Context(final),
  name name: String,
  count count: Int,
  serializer serializer: Serializer(t),
  getter getter: fn(final, Int) -> t,
  next next: fn(Context(final), List(t)) -> decode.Decoder(
    #(Context(final), final),
  ),
) -> decode.Decoder(#(Context(final), final))
pub fn int() -> Serializer(Int)
pub fn int_within(min: Int, max: Int) -> Serializer(Int)
pub fn list(of: Serializer(a)) -> Serializer(List(a))
pub fn null() -> Serializer(Nil)
pub fn object(
  next: fn(Context(t)) -> decode.Decoder(#(Context(t), t)),
) -> Serializer(t)
pub fn optional(
  of: Serializer(a),
) -> Serializer(option.Option(a))
pub fn optional_field(
  context context: Context(final),
  name name: String,
  default default: t,
  serializer serializer: Serializer(t),
  getter getter: fn(final) -> t,
  next next: fn(Context(final), t) -> decode.Decoder(
    #(Context(final), final),
  ),
) -> decode.Decoder(#(Context(final), final))
pub fn optional_indexed_field(
  context context: Context(final),
  name name: String,
  count count: Int,
  default default: t,
  serializer serializer: Serializer(t),
  getter getter: fn(final, Int) -> t,
  next next: fn(Context(final), List(t)) -> decode.Decoder(
    #(Context(final), final),
  ),
) -> decode.Decoder(#(Context(final), final))
pub fn string() -> Serializer(String)
pub fn string_enum(
  values: List(a),
  to_string: fn(a) -> String,
) -> Serializer(a)
pub fn variant(
  serializer serializer: Serializer(b),
  mapper mapper: fn(b) -> a,
  inverse_mapper inverse_mapper: fn(a) -> Result(b, Nil),
) -> EnumVariant(a)
✨ Search Document