Print.pretty.go: def of emerging-ezjson@1.3.0.0 Import: import emerging-ezjson@1.3.0.0/src/print.bend as Print Lines 104-145 of emerging-ezjson@1.3.0.0/src/print.bend: https://jend.leeeet.dev/read.txt?path=emerging-ezjson@1.3.0.0/src/print.bend&start_line=104&end_line=145 import Base import emerging-ezjson@1.3.0.0/src/value.bend as V # a value as indented JSON. `pad` is the spaces a value's lines start with, # after their newline. For a chain of cells, a newline and `pad` start each # element or member, and `close` follows the last one, before the bracket def pretty.go(val: V.Json, +pad: String, +close: String) -> String: match val: case V.JNull{}: "null" case V.JBool{True{}}: "true" case V.JBool{False{}}: "false" case V.JNum{raw}: raw case V.JStr{s}: quote(s) case V.JSpan{src, +n}: quote(V.span.str(src, n, U32.is_zero(n))) case V.JArr{V.JNil{}}: "[]" case V.JArr{items}: +inner = " " ++ pad "[\n" ++ inner ++ pretty.go(items, inner, "\n" ++ pad) ++ "]" case V.JObj{V.JNil{}}: "{}" case V.JObj{pairs}: +inner = " " ++ pad "{\n" ++ inner ++ pretty.go(pairs, inner, "\n" ++ pad) ++ "}" case V.JNil{}: "" case V.JCons{h, V.JNil{}}: pretty.go(h, pad, "") ++ close case V.JCons{h, t}: pretty.go(h, pad, "") ++ ",\n" ++ pad ++ pretty.go(t, pad, close) case V.JPair{k, v, V.JNil{}}: quote(k) ++ ": " ++ pretty.go(v, pad, "") ++ close case V.JPair{k, v, r}: quote(k) ++ ": " ++ pretty.go(v, pad, "") ++ ",\n" ++ pad ++ pretty.go(r, pad, close) case V.JBind{src, +n, v, V.JNil{}}: quote(V.span.str(src, n, U32.is_zero(n))) ++ ": " ++ pretty.go(v, pad, "") ++ close case V.JBind{src, +n, v, r}: quote(V.span.str(src, n, U32.is_zero(n))) ++ ": " ++ pretty.go(v, pad, "") ++ ",\n" ++ pad ++ pretty.go(r, pad, close) Uses (7): https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Bool https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=String https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=String.append https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.is_zero https://jend.leeeet.dev/definition.txt?path=emerging-ezjson@1.3.0.0/src/print.bend&name=quote https://jend.leeeet.dev/definition.txt?path=emerging-ezjson@1.3.0.0/src/value.bend&name=Json https://jend.leeeet.dev/definition.txt?path=emerging-ezjson@1.3.0.0/src/value.bend&name=span.str