def close.out

emerging-ezjson@1.3.0.0 · src/pull.bend:376

import emerging-ezjson@1.3.0.0/src/pull.bend as Pull
import Base

376# a container closed. `frames` is the stack with that frame popped
377def close.out(ev: Ev, frames: List<&2, Frame>, goal: Goal) -> St:
378  match frames goal:
379    case Nil{} GNext{}:
380      close.next(ev, Nil{}, True{})
381    case Nil{} GSkip{depth}:
382      close.skip(Nil{}, depth, True{})
383    case Con{FArr{SVal{}, fresh}, outer} GNext{}:
384      close.next(ev, FArr{SCom{}, False{}} <> outer, False{})
385    case Con{FObj{SVal{}, fresh}, outer} GNext{}:
386      close.next(ev, FObj{SCom{}, False{}} <> outer, False{})
387    case Con{FArr{SVal{}, fresh}, outer} GSkip{depth}:
388      close.skip(FArr{SCom{}, False{}} <> outer, depth, False{})
389    case Con{FObj{SVal{}, fresh}, outer} GSkip{depth}:
390      close.skip(FObj{SCom{}, False{}} <> outer, depth, False{})
391    case frames2 g:
392      err.st(g)

Uses (10)

Used by (2)