def y

cswap-bend-cli@0.1.0.0 · fmt/yamlw.bend:71

import cswap-bend-cli@0.1.0.0/fmt/yamlw.bend as Yamlw
import Base
import cswap-bend-cli@0.1.0.0/json.bend as Json

71# `j` at the base indent `d` in context `k`. Chains (fields, items) carry their
72# lines at `d`; the first line of a chain starts wherever the caller left off.
73def y(j: Json.Json, +k: Ctx, +d: Nat) -> String:
74  match j:
75    case Json.JNull{}:
76      lead(k) ++ "null"
77    case Json.JBool{b}:
78      lead(k) ++ Json.bool.show(b)
79    case Json.JNum{t}:
80      lead(k) ++ t
81    case Json.JStr{s}:
82      lead(k) ++ str(s)
83    case Json.JArr{+items}:
84      cont(is_nil(items), k, d, "[]", y(items, CChain{}, ind(k, d)))
85    case Json.JObj{+fields}:
86      cont(is_nil(fields), k, d, "{}", y(fields, CChain{}, ind(k, d)))
87    case Json.JNil{}:
88      ""
89    case Json.JCons{h, +t}:
90      "- " ++ y(h, CItem{}, d) ++ sep(t, d, y(t, CChain{}, d))
91    case Json.JField{key, v, +t}:
92      str(key) ++ ":" ++ y(v, CKey{}, d) ++ sep(t, d, y(t, CChain{}, d))

Uses (12)

Used by (1)