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.