def preview.loop

mylsm-lsm-store@0.6.0.1 · src/scan/VisibleCursor.bend:490

import mylsm-lsm-store@0.6.0.1/src/scan/VisibleCursor.bend as VisibleCursor
import Base

490def preview.loop(fuel: Nat, state: PreviewState) -> IO(Preview):
491  match fuel:
492    case 0n:
493      match state:
494        case PreviewNeed{cursor}: IO.pure(Preview, PreviewFailed{cursor})
495        case PreviewRead{step}:
496          match step:
497            case Item{_, cursor}:
498              IO.pure(Preview, PreviewFailed{cursor})
499            case Skip{cursor}:
500              IO.pure(Preview, PreviewFailed{cursor})
501            case End{}:
502              IO.pure(Preview, PreviewEnded{Ended{}})
503            case Error{error}:
504              IO.pure(Preview, PreviewFailed{Failed{error}})
505    case 1n+rest:
506      match state:
507        case PreviewNeed{cursor}:
508          do IO<Preview>:
509            step : Step <- next(cursor)
510            preview.loop(rest, PreviewRead{step})
511        case PreviewRead{step}:
512          match step:
513            case Item{entry, advanced}:
514              IO.pure(Preview, preview.item(entry, advanced))
515            case Skip{advanced}:
516              preview.loop(rest, PreviewNeed{advanced})
517            case End{}:
518              IO.pure(Preview, PreviewEnded{Ended{}})
519            case Error{error}:
520              IO.pure(Preview, PreviewFailed{Failed{error}})

Uses (10)

Used by (1)