def doc.read

emerging-eztoml@0.9.0.0 · main.bend:5675

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

5675# one character at a time. a plain string keeps a span of this suffix
5676def doc.read(text: String, mode: Mode) -> Doc:
5677  match text mode:
5678    case SNil{} MScan{st}:
5679      read.fin(read.once2(st))
5680    case SNil{} MCr{st}:
5681      read.fin(read.once2(st.err(st, "carriage return without line feed")))
5682    case SNil{} MOpen{_basic, _q, qkind, bad, rows, heads, here, parts, buf, back,
5683      stack, uni, left, arrtab}:
5684      read.fin(read.once2(St{bad, rows, heads, here, parts, buf, LQ{}, back, qkind,
5685        stack, HNone{}, uni, left, arrtab, False{}}))
5686    case SNil{} MEat{_basic, _q, cut, n, bad, rows, heads, here, parts, qkind, stack,
5687      uni, left, arrtab}:
5688      eat.fin(n, span.drop(cut), bad, rows, heads, here, parts, qkind, stack, uni,
5689        left, arrtab)
5690    case SCon{+h, +t} MOpen{basic, q, qkind, bad, rows, heads, here, parts, buf, back,
5691      stack, uni, left, arrtab}:
5692      doc.read(t, doc.open(basic, q, qkind, bad, rows, heads, here, parts, buf, back,
5693        stack, uni, left, arrtab, h, t))
5694    case SCon{+h, t} MEat{basic, q, cut, n, bad, rows, heads, here, parts, qkind,
5695      stack, uni, left, arrtab}:
5696      doc.read(t, eat.feed(basic, q, cut, n, bad, rows, heads, here, parts, qkind,
5697        stack, uni, left, arrtab, h))
5698    case SCon{+h, t} MScan{st}:
5699      doc.read(t, doc.scan(st, h))
5700    case SCon{+h, t} MCr{st}:
5701      doc.read(t, doc.cr(Char.is_eq(h, '\n'), st, h))

Uses (18)

Used by (1)