def render.pass

emerging-eztoml@0.9.0.0 · main.bend:5927

import emerging-eztoml@0.9.0.0/main.bend as EmergingEztoml
import Base

5927# one pass: keys, or the tables that follow them
5928def render.pass(vs: List<&2, Val>, +gap: String, +trail: Bool, +tabs: Bool) -> String:
5929  match vs:
5930    case []:
5931      ""
5932    case VPair{_name, VHead{path, +rows}} <> +t:
5933      render.head(tabs, path, rows, t, gap, trail,
5934        _u => render.pass(rows, "\n", True{}, False{}) ++
5935          render.pass(rows, "\n", True{}, True{}),
5936        _u => render.pass(t, gap, trail, tabs))
5937    case VPair{_name, VAots{_path, +elems}} <> +t:
5938      render.aots(tabs, elems, t, gap, trail,
5939        _u => render.pass(elems, "\n", True{}, False{}) ++
5940          render.pass(elems, "\n", True{}, True{}),
5941        _u => render.pass(t, gap, trail, tabs))
5942    case VAot{path, +rows} <> +t:
5943      render.aot(tabs, path, rows, t, gap, trail,
5944        _u => render.pass(rows, "\n", True{}, False{}) ++
5945          render.pass(rows, "\n", True{}, True{}),
5946        _u => render.pass(t, gap, trail, tabs))
5947    case VPair{name, VArr{items}} <> +t:
5948      render.late(tabs, _u => key(name) ++ " = [" ++ render.go(items, ", ", False{}) ++ "]",
5949        t, gap, trail, _v => render.pass(t, gap, trail, tabs))
5950    case VPair{name, VInl{rows}} <> +t:
5951      render.late(tabs, _u => key(name) ++ " = {" ++ render.go(rows, ", ", False{}) ++ "}",
5952        t, gap, trail, _v => render.pass(t, gap, trail, tabs))
5953    case VPair{name, val} <> +t:
5954      render.late(tabs, _u => key(name) ++ " = " ++ render.atom(val), t, gap, trail,
5955        _v => render.pass(t, gap, trail, tabs))
5956    case VArr{items} <> +t:
5957      render.late(tabs, _u => "[" ++ render.go(items, ", ", False{}) ++ "]",
5958        t, gap, trail, _v => render.pass(t, gap, trail, tabs))
5959    case VInl{rows} <> +t:
5960      render.late(tabs, _u => "{" ++ render.go(rows, ", ", False{}) ++ "}",
5961        t, gap, trail, _v => render.pass(t, gap, trail, tabs))
5962    case v <> +t:
5963      render.late(tabs, _u => render.atom(v), t, gap, trail,
5964        _v => render.pass(t, gap, trail, tabs))

Uses (12)

Used by (1)