EmergingEztoml.doc.read: def of emerging-eztoml@0.9.0.0 Import: import emerging-eztoml@0.9.0.0/main.bend as EmergingEztoml Lines 5675-5701 of emerging-eztoml@0.9.0.0/main.bend: https://jend.leeeet.dev/read.txt?path=emerging-eztoml@0.9.0.0/main.bend&start_line=5675&end_line=5701 import Base # one character at a time. a plain string keeps a span of this suffix def doc.read(text: String, mode: Mode) -> Doc: match text mode: case SNil{} MScan{st}: read.fin(read.once2(st)) case SNil{} MCr{st}: read.fin(read.once2(st.err(st, "carriage return without line feed"))) case SNil{} MOpen{_basic, _q, qkind, bad, rows, heads, here, parts, buf, back, stack, uni, left, arrtab}: read.fin(read.once2(St{bad, rows, heads, here, parts, buf, LQ{}, back, qkind, stack, HNone{}, uni, left, arrtab, False{}})) case SNil{} MEat{_basic, _q, cut, n, bad, rows, heads, here, parts, qkind, stack, uni, left, arrtab}: eat.fin(n, span.drop(cut), bad, rows, heads, here, parts, qkind, stack, uni, left, arrtab) case SCon{+h, +t} MOpen{basic, q, qkind, bad, rows, heads, here, parts, buf, back, stack, uni, left, arrtab}: doc.read(t, doc.open(basic, q, qkind, bad, rows, heads, here, parts, buf, back, stack, uni, left, arrtab, h, t)) case SCon{+h, t} MEat{basic, q, cut, n, bad, rows, heads, here, parts, qkind, stack, uni, left, arrtab}: doc.read(t, eat.feed(basic, q, cut, n, bad, rows, heads, here, parts, qkind, stack, uni, left, arrtab, h)) case SCon{+h, t} MScan{st}: doc.read(t, doc.scan(st, h)) case SCon{+h, t} MCr{st}: doc.read(t, doc.cr(Char.is_eq(h, '\n'), st, h)) Uses (18): https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Bool https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Char https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Char.is_eq https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=String https://jend.leeeet.dev/definition.txt?path=emerging-eztoml@0.9.0.0/main.bend&name=Doc https://jend.leeeet.dev/definition.txt?path=emerging-eztoml@0.9.0.0/main.bend&name=Hold https://jend.leeeet.dev/definition.txt?path=emerging-eztoml@0.9.0.0/main.bend&name=Lex https://jend.leeeet.dev/definition.txt?path=emerging-eztoml@0.9.0.0/main.bend&name=Mode https://jend.leeeet.dev/definition.txt?path=emerging-eztoml@0.9.0.0/main.bend&name=St https://jend.leeeet.dev/definition.txt?path=emerging-eztoml@0.9.0.0/main.bend&name=doc.cr https://jend.leeeet.dev/definition.txt?path=emerging-eztoml@0.9.0.0/main.bend&name=doc.open https://jend.leeeet.dev/definition.txt?path=emerging-eztoml@0.9.0.0/main.bend&name=doc.scan https://jend.leeeet.dev/definition.txt?path=emerging-eztoml@0.9.0.0/main.bend&name=eat.feed https://jend.leeeet.dev/definition.txt?path=emerging-eztoml@0.9.0.0/main.bend&name=eat.fin https://jend.leeeet.dev/definition.txt?path=emerging-eztoml@0.9.0.0/main.bend&name=read.fin https://jend.leeeet.dev/definition.txt?path=emerging-eztoml@0.9.0.0/main.bend&name=read.once2 https://jend.leeeet.dev/definition.txt?path=emerging-eztoml@0.9.0.0/main.bend&name=span.drop https://jend.leeeet.dev/definition.txt?path=emerging-eztoml@0.9.0.0/main.bend&name=st.err