def put

emerging-ezjson@1.3.0.0 · src/parse.bend:65

import emerging-ezjson@1.3.0.0/src/parse.bend as Parse
import Base
import emerging-ezjson@1.3.0.0/src/value.bend as V

65# a finished value lands in the innermost open frame, or becomes the root
66def put(stack: List<&2, Frame>, root: Maybe<&2, V.Json>, vv: V.Json, bad: Bool) -> P:
67  match stack root vv:
68    case Nil{} None{} val:
69      P{bad, Some{val}, Nil{}}
70    case Nil{} Some{r} val:
71      P{True{}, Some{r}, Nil{}}
72    case Con{FArr{items, SValue{}}, rest} r val:
73      P{bad, r, FArr{V.JCons{val, items}, SComma{}} <> rest}
74    case Con{FObj{pairs, k, SValue{}}, rest} r val:
75      P{bad, r, FObj{put.pair(k, val, pairs), KOwn{""}, SComma{}} <> rest}
76    case s r val:
77      P{True{}, r, Nil{}}

Uses (9)

Used by (5)