Json.runb: def of bend-kit-json@0.7.0.0 Import: import bend-kit-json@0.7.0.0/json.bend as Json Lines 694-725 of bend-kit-json@0.7.0.0/json.bend: https://jend.leeeet.dev/read.txt?path=bend-kit-json@0.7.0.0/json.bend&start_line=694&end_line=725 import Base # fuel: a step eats a byte, or ends a number, a value, or an opening bracket, so 4 * len + 4 steps are enough. def runb(+fuel: Nat, r: Array & Sb & U32, +len: U32, +strict: Bool, +cap: U32) -> Maybe<&1, Val>: match fuel: case 0n: None{} case 1n+f: (a, sb, depth) = r match sb: case BOk{v}: Some{v} case BFail{}: None{} case BValue{+i, stack}: runb(f, level.r(depth, value.r(len, stack, run(~is_ws, f, a, len, i))), len, strict, cap) case BFirst{+i, open, stack}: runb(f, first.limit(cap, depth, open, stack, run(~is_ws, f, a, len, i)), len, strict, cap) case BKey{+i, stack}: runb(f, level.r(depth, key.r(stack, run(~is_ws, f, a, len, i))), len, strict, cap) case BColon{k, +i, stack}: runb(f, level.r(depth, colon.r(k, stack, run(~is_ws, f, a, len, i))), len, strict, cap) case BStr{+i, +s, k, stack}: runb(f, level.r(depth, str.r(strict, len, s, k, stack, run(~plain, f, a, len, i))), len, strict, cap) case BEsc{+i, acc, k, stack}: runb(f, level.r(depth, esc.r(strict, len, i, acc, k, stack, run(~plain, f, a, len, i))), len, strict, cap) case BNum{+i, +s, +st, stack}: runb(f, level.r(depth, num.r(s, st, stack, num.run(U32.is_eq(st, 3) || U32.is_eq(st, 5) || U32.is_eq(st, 8), f, a, len, i))), len, strict, cap) case BAfter{v, +i, stack}: runb(f, (a, after.b(v, i, stack), depth), len, strict, cap) case BSep{+i, open, stack}: runb(f, sep.r(depth, open, stack, run(~is_ws, f, a, len, i)), len, strict, cap) case BEnd{v, +i}: runb(f, level.r(depth, end.r(v, run(~is_ws, f, a, len, i))), len, strict, cap) Uses (26): https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Array https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Bool https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Bool.or https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Maybe https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Nat https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Pair https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=Sigma https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32 https://jend.leeeet.dev/definition.txt?path=Base/base.bend&name=U32.is_eq https://jend.leeeet.dev/definition.txt?path=bend-kit-json@0.7.0.0/json.bend&name=Sb https://jend.leeeet.dev/definition.txt?path=bend-kit-json@0.7.0.0/json.bend&name=Val https://jend.leeeet.dev/definition.txt?path=bend-kit-json@0.7.0.0/json.bend&name=after.b https://jend.leeeet.dev/definition.txt?path=bend-kit-json@0.7.0.0/json.bend&name=colon.r https://jend.leeeet.dev/definition.txt?path=bend-kit-json@0.7.0.0/json.bend&name=end.r https://jend.leeeet.dev/definition.txt?path=bend-kit-json@0.7.0.0/json.bend&name=esc.r https://jend.leeeet.dev/definition.txt?path=bend-kit-json@0.7.0.0/json.bend&name=first.limit https://jend.leeeet.dev/definition.txt?path=bend-kit-json@0.7.0.0/json.bend&name=is_ws https://jend.leeeet.dev/definition.txt?path=bend-kit-json@0.7.0.0/json.bend&name=key.r https://jend.leeeet.dev/definition.txt?path=bend-kit-json@0.7.0.0/json.bend&name=level.r https://jend.leeeet.dev/definition.txt?path=bend-kit-json@0.7.0.0/json.bend&name=num.r https://jend.leeeet.dev/definition.txt?path=bend-kit-json@0.7.0.0/json.bend&name=num.run https://jend.leeeet.dev/definition.txt?path=bend-kit-json@0.7.0.0/json.bend&name=plain https://jend.leeeet.dev/definition.txt?path=bend-kit-json@0.7.0.0/json.bend&name=run https://jend.leeeet.dev/definition.txt?path=bend-kit-json@0.7.0.0/json.bend&name=sep.r https://jend.leeeet.dev/definition.txt?path=bend-kit-json@0.7.0.0/json.bend&name=str.r https://jend.leeeet.dev/definition.txt?path=bend-kit-json@0.7.0.0/json.bend&name=value.r