Combine Cursor with State
This commit is contained in:
@ -7,7 +7,6 @@ import (
|
||||
"io"
|
||||
|
||||
"git.codemonkeysoftware.net/b/gigaparsec"
|
||||
"git.codemonkeysoftware.net/b/gigaparsec/cursor"
|
||||
"github.com/shoenig/test"
|
||||
)
|
||||
|
||||
@ -24,29 +23,6 @@ func ErrReaderAt(err error) io.ReaderAt {
|
||||
return errReaderAt{err: err}
|
||||
}
|
||||
|
||||
type errCursor[T any] struct {
|
||||
err error
|
||||
pos uint64
|
||||
}
|
||||
|
||||
func (c errCursor[T]) Read([]T) (uint64, cursor.Cursor[T], error) {
|
||||
return 0, c, c.err
|
||||
}
|
||||
|
||||
func (c errCursor[T]) At(pos uint64) cursor.Cursor[T] {
|
||||
c.pos = pos
|
||||
return c
|
||||
}
|
||||
|
||||
func (c errCursor[T]) Pos() uint64 {
|
||||
return c.pos
|
||||
}
|
||||
|
||||
// ErrCursor return a [cursor.Cursor] with a Read method that always returns err.
|
||||
func ErrCursor[T any](err error) cursor.Cursor[T] {
|
||||
return errCursor[T]{err: err}
|
||||
}
|
||||
|
||||
func StateIsAt[Input any](t test.T, s gigaparsec.State[Input], pos uint64) {
|
||||
test.EqOp(t, pos, s.Pos(), test.Sprintf("expected parser state to be at position %d, got %d", pos, s.Pos()))
|
||||
}
|
||||
|
Reference in New Issue
Block a user