libduvet/model/decoding

Types

A JSON object, as the API and the gateway send them.

pub type Object =
  dict.Dict(String, dynamic.Dynamic)

Values

pub fn as_object_or_none(
  value: dynamic.Dynamic,
) -> option.Option(dict.Dict(String, dynamic.Dynamic))

A value already in hand, read as an object when it is one.

pub fn as_string_or_none(
  value: dynamic.Dynamic,
) -> option.Option(String)

A value already in hand, read as a string when it is one.

pub fn bool(
  object: dict.Dict(String, dynamic.Dynamic),
  key: String,
) -> Bool
pub fn bool_or(
  object: dict.Dict(String, dynamic.Dynamic),
  key: String,
  default: Bool,
) -> Bool
pub fn empty_object() -> dict.Dict(String, dynamic.Dynamic)
pub fn field(
  object: dict.Dict(String, dynamic.Dynamic),
  key: String,
) -> option.Option(dynamic.Dynamic)

The value at [key], when the object has it and it isn’t null.

pub fn format_time(parsed: timestamp.Timestamp) -> String

A timestamp as Dart’s DateTime.toUtc().toIso8601String() writes it: microseconds when there are any, milliseconds otherwise.

pub fn int(
  object: dict.Dict(String, dynamic.Dynamic),
  key: String,
) -> Int
pub fn int_list_value(
  value: dynamic.Dynamic,
  key: String,
) -> List(Int)

A value already in hand, read as a list of integers.

pub fn int_or(
  object: dict.Dict(String, dynamic.Dynamic),
  key: String,
  default: Int,
) -> Int
pub fn int_value(value: dynamic.Dynamic, key: String) -> Int

A value already in hand, read as an integer.

pub fn list(
  object: dict.Dict(String, dynamic.Dynamic),
  key: String,
  decode decode: fn(dynamic.Dynamic) -> item,
) -> List(item)

A list that must be there, whose items [decode] reads.

pub fn list_or_empty(
  object: dict.Dict(String, dynamic.Dynamic),
  key: String,
  decode decode: fn(dynamic.Dynamic) -> item,
) -> List(item)

The field as a list, or [] when it is null or missing.

pub fn map(
  object: dict.Dict(String, dynamic.Dynamic),
  key: String,
  decode decode: fn(dynamic.Dynamic) -> item,
) -> dict.Dict(String, item)
pub fn map_objects(
  object: dict.Dict(String, dynamic.Dynamic),
  key: String,
  read: fn(dict.Dict(String, dynamic.Dynamic)) -> item,
) -> dict.Dict(String, item)

A map of objects, each read by [read].

pub fn map_objects_or_empty(
  object: dict.Dict(String, dynamic.Dynamic),
  key: String,
  read: fn(dict.Dict(String, dynamic.Dynamic)) -> item,
) -> dict.Dict(String, item)
pub fn map_or_empty(
  object: dict.Dict(String, dynamic.Dynamic),
  key: String,
  decode decode: fn(dynamic.Dynamic) -> item,
) -> dict.Dict(String, item)
pub fn number(
  object: dict.Dict(String, dynamic.Dynamic),
  key: String,
) -> Float

A num field: an integer or a decimal, as a float.

pub fn object(
  object: dict.Dict(String, dynamic.Dynamic),
  key: String,
) -> dict.Dict(String, dynamic.Dynamic)

An object field that must be there.

pub fn object_value(
  value: dynamic.Dynamic,
  key: String,
) -> dict.Dict(String, dynamic.Dynamic)

A value already in hand, read as an object.

pub fn objects(
  object: dict.Dict(String, dynamic.Dynamic),
  key: String,
  read: fn(dict.Dict(String, dynamic.Dynamic)) -> item,
) -> List(item)

A list of objects, each read by [read].

pub fn objects_or_empty(
  object: dict.Dict(String, dynamic.Dynamic),
  key: String,
  read: fn(dict.Dict(String, dynamic.Dynamic)) -> item,
) -> List(item)
pub fn objects_value(
  value: dynamic.Dynamic,
) -> List(dict.Dict(String, dynamic.Dynamic))

A value already in hand, read as a list of objects; null reads as none.

pub fn on_object(
  read: fn(dict.Dict(String, dynamic.Dynamic)) -> item,
) -> fn(dynamic.Dynamic) -> item

Turns a model’s decoder into one for the model’s position in a list or a map, where the value arrives still untyped.

pub fn optional_bool(
  object: dict.Dict(String, dynamic.Dynamic),
  key: String,
) -> option.Option(Bool)
pub fn optional_int(
  object: dict.Dict(String, dynamic.Dynamic),
  key: String,
) -> option.Option(Int)
pub fn optional_list(
  object: dict.Dict(String, dynamic.Dynamic),
  key: String,
  decode decode: fn(dynamic.Dynamic) -> item,
) -> option.Option(List(item))

A list whose items [decode] reads, when the field is there and not null.

pub fn optional_map(
  object: dict.Dict(String, dynamic.Dynamic),
  key: String,
  decode decode: fn(dynamic.Dynamic) -> item,
) -> option.Option(dict.Dict(String, item))
pub fn optional_number(
  object: dict.Dict(String, dynamic.Dynamic),
  key: String,
) -> option.Option(Float)
pub fn optional_object(
  object: dict.Dict(String, dynamic.Dynamic),
  key: String,
) -> option.Option(dict.Dict(String, dynamic.Dynamic))
pub fn optional_objects(
  object: dict.Dict(String, dynamic.Dynamic),
  key: String,
  read: fn(dict.Dict(String, dynamic.Dynamic)) -> item,
) -> option.Option(List(item))
pub fn optional_string(
  object: dict.Dict(String, dynamic.Dynamic),
  key: String,
) -> option.Option(String)
pub fn optional_string_list(
  object: dict.Dict(String, dynamic.Dynamic),
  key: String,
) -> option.Option(List(String))
pub fn optional_string_map(
  object: dict.Dict(String, dynamic.Dynamic),
  key: String,
) -> option.Option(dict.Dict(String, String))
pub fn optional_string_when_string(
  object: dict.Dict(String, dynamic.Dynamic),
  key: String,
) -> option.Option(String)

The field when it is a string, and None when it isn’t (a credential that isn’t a password is an object, and is left out).

pub fn optional_time(
  object: dict.Dict(String, dynamic.Dynamic),
  key: String,
) -> option.Option(timestamp.Timestamp)
pub fn parse_time(
  text: String,
  key: String,
) -> timestamp.Timestamp
pub fn string(
  object: dict.Dict(String, dynamic.Dynamic),
  key: String,
) -> String
pub fn string_list(
  object: dict.Dict(String, dynamic.Dynamic),
  key: String,
) -> List(String)
pub fn string_list_or_empty(
  object: dict.Dict(String, dynamic.Dynamic),
  key: String,
) -> List(String)
pub fn string_list_value(
  value: dynamic.Dynamic,
  key: String,
) -> List(String)

A value already in hand, read as a list of strings.

pub fn string_map(
  object: dict.Dict(String, dynamic.Dynamic),
  key: String,
) -> dict.Dict(String, String)
pub fn string_map_or_empty(
  object: dict.Dict(String, dynamic.Dynamic),
  key: String,
) -> dict.Dict(String, String)
pub fn string_or(
  object: dict.Dict(String, dynamic.Dynamic),
  key: String,
  default: String,
) -> String

The field as a string, or [default] when it is null or missing.

pub fn string_or_string_list_value(
  value: dynamic.Dynamic,
  key: String,
) -> List(String)

A value already in hand, read as one string or a list of them (a “urls” field takes either); anything else reads as [].

pub fn time(
  object: dict.Dict(String, dynamic.Dynamic),
  key: String,
) -> timestamp.Timestamp

A timestamp, as DateTime.parse reads one.

Dart keeps microseconds, so anything finer is dropped here too: two timestamps that differ only below a microsecond are the same one.

✨ Search Document