feat: add OffsetDateTime, nesting limits and uniform Marshaler dispatch
Test / test (push) Successful in 2m18s
Test / test (push) Successful in 2m18s
Assisted-by: DeepSeek V4.1 Flash
This commit is contained in:
@@ -285,8 +285,11 @@ func typeMatches(typ string, v any) bool {
|
||||
_, ok := v.(bool)
|
||||
return ok
|
||||
case "datetime":
|
||||
_, ok := v.(time.Time)
|
||||
return ok
|
||||
switch v.(type) {
|
||||
case time.Time, interpres.OffsetDateTime:
|
||||
return true
|
||||
}
|
||||
return false
|
||||
case "datetime-local":
|
||||
_, ok := v.(interpres.LocalDateTime)
|
||||
return ok
|
||||
@@ -346,6 +349,8 @@ func tag(v any) (any, error) {
|
||||
return tagged("float", formatFloat(x)), nil
|
||||
case time.Time:
|
||||
return tagged("datetime", x.Format(time.RFC3339Nano)), nil
|
||||
case interpres.OffsetDateTime:
|
||||
return tagged("datetime", x.Format(time.RFC3339Nano)), nil
|
||||
case interpres.LocalDateTime:
|
||||
return tagged("datetime-local", x.Format("2006-01-02T15:04:05.999999999")), nil
|
||||
case interpres.LocalDate:
|
||||
|
||||
@@ -373,7 +373,7 @@ func TestRunEncoderRejectsBadInput(t *testing.T) {
|
||||
{"top-level-array", `[{"type": "integer", "value": "1"}]`, "must be a JSON object"},
|
||||
{"untagged-scalar", `{"x": 1}`, "unsupported JSON value"},
|
||||
{"literal-mismatch", `{"x": {"type": "integer", "value": "1.5"}}`, "parsed as float64"},
|
||||
{"offset-for-local", `{"x": {"type": "datetime-local", "value": "1979-05-27T07:32:00Z"}}`, "parsed as time.Time"},
|
||||
{"offset-for-local", `{"x": {"type": "datetime-local", "value": "1979-05-27T07:32:00Z"}}`, "parsed as interpres.OffsetDateTime"},
|
||||
{"bad-literal", `{"x": {"type": "date-local", "value": "nope"}}`, "date-local"},
|
||||
{"smuggled-statement", `{"x": {"type": "integer", "value": "1\nx = 2"}}`, "not a single bare value"},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user