Assisted-by: GLM 5.3 Flash
This commit is contained in:
+27
@@ -196,6 +196,8 @@ table with `Number`, which keeps the literal; see
|
||||
- `*struct`, matched per the field rules below
|
||||
- `*map[string]any` or `*map[string]T`, keys become map keys and values decode
|
||||
into `T` recursively
|
||||
- `*OrderedMap`, the keys fill in the order the document wrote them; see
|
||||
[Ordered tables](#ordered-tables)
|
||||
- `*any`, receives the whole parsed tree unchanged
|
||||
|
||||
Anything else returns `interpres: decode target must be a non-nil pointer`.
|
||||
@@ -366,6 +368,26 @@ and `from_text = "1h30m"` decode to the same duration. Text that
|
||||
`time.ParseDuration` rejects, `d = "90"` among it, fails with
|
||||
`interpres: invalid duration "90"`.
|
||||
|
||||
### Ordered tables
|
||||
|
||||
`OrderedMap` is a string-keyed table that remembers the order its keys were
|
||||
set in, the shape a `map[string]any` cannot carry. Decoding into one fills it
|
||||
in the order the document wrote the keys, and `Marshal` writes one back in
|
||||
that order, where a map destination carries no order and a map source sorts
|
||||
its keys. The type is a decode target on its own, in a struct field, and as
|
||||
the element of an array of tables.
|
||||
|
||||
```go
|
||||
var cfg OrderedMap
|
||||
err := interpres.Unmarshal(data, &cfg)
|
||||
out, err := interpres.Marshal(&cfg) // the keys come back in written order
|
||||
```
|
||||
|
||||
The values are untyped, the shape the parser produces, so a nested table
|
||||
inside an `OrderedMap` is a plain `map[string]any`; the order is kept at the
|
||||
level the `OrderedMap` sits at. Inside a value array an `OrderedMap` renders
|
||||
as an ordinary inline table, whose keys are sorted.
|
||||
|
||||
### Strict decoding
|
||||
|
||||
By default unknown keys are dropped silently. A `Decoder` built with
|
||||
@@ -782,6 +804,11 @@ The literal a number was written with, what `UseNumber` decodes into and what
|
||||
`Marshal` writes back as it is. See
|
||||
[Numbers as literals](#numbers-as-literals).
|
||||
|
||||
### `type OrderedMap`
|
||||
|
||||
The string-keyed table that keeps its key order on both the encode and the
|
||||
decode side. See [Ordered tables](#ordered-tables).
|
||||
|
||||
### Date-time wrappers
|
||||
|
||||
```go
|
||||
|
||||
Reference in New Issue
Block a user