pont/serialize
Types
pub type Decoder(a) {
Decoder(decoder: decode.Decoder(a), spec: spec.Spec)
}
Constructors
-
Decoder(decoder: decode.Decoder(a), spec: spec.Spec)
pub type Encoder(a) {
Encoder(encoder: fn(a) -> value.Value, spec: spec.Spec)
}
Constructors
-
Encoder(encoder: fn(a) -> value.Value, spec: spec.Spec)
pub type EnumVariant(a) {
EnumVariant(
decoder: decode.Decoder(a),
encoder: fn(a) -> Result(value.Value, Nil),
spec: spec.Spec,
)
}
Constructors
-
EnumVariant( decoder: decode.Decoder(a), encoder: fn(a) -> Result(value.Value, Nil), spec: spec.Spec, )
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
-
Serializer( decoder: decode.Decoder(a), encoder: fn(a) -> value.Value, spec: spec.Spec, )
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 timestamp() -> Serializer(timestamp.Timestamp)
pub fn value() -> Serializer(value.Value)
pub fn variant(
serializer serializer: Serializer(b),
mapper mapper: fn(b) -> a,
inverse_mapper inverse_mapper: fn(a) -> Result(b, Nil),
) -> EnumVariant(a)