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
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))