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