Djot.AttrKey/value pairs in source order. "id" holds the identifier; "class" holds every class, space-separated.
val empty : tval find : string -> t -> string optionval id : t -> string optionval classes : t -> string listval kvs : t -> (string * string) listThe entries other than "id" and "class".
Whether a string can be one class name: one or more of a-z, A-Z, 0-9, -, _, :.
val is_valid : t -> boolNone if k is not a valid key.
Position: the value is replaced in place if k is already present, otherwise added at the end.
val of_string : string -> t optionParses djot attribute syntax, {...}, None if not a valid attribute syntax.