From a8beb11d30347fa8bc0ef060ecaa3387c5069257 Mon Sep 17 00:00:00 2001 From: Alejandro Mery Date: Mon, 28 Aug 2023 16:42:08 +0000 Subject: [PATCH] runes.Reader: WIP Signed-off-by: Alejandro Mery --- runes/reader.go | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/runes/reader.go b/runes/reader.go index 1e73048..18e9d23 100644 --- a/runes/reader.go +++ b/runes/reader.go @@ -18,7 +18,8 @@ const ( // implemented interfaces var ( - _ io.RuneReader = (*Reader)(nil) + _ io.RuneReader = (*Reader)(nil) + _ io.RuneScanner = (*Reader)(nil) ) // Reader is a RuneReader aimed at implementing text parsers @@ -156,6 +157,22 @@ func (b *Reader) ReadRune() (rune, int, error) { return r, l, nil } +// UnreadRune moves the cursor where it was before the last call to ReadRune +func (*Reader) UnreadRune() error { + return nil +} + +// PeekRune returns information about the next rune without moving the +// cursor +func (b *Reader) PeekRune() (rune, int, error) { + r, l, err := b.ReadRune() + if err != nil { + return r, l, err + } + err = b.UnreadRune() + return r, l, err +} + // NewReader creates a new runes [Reader] using the given [io.Reader] func NewReader(r io.Reader) *Reader { if r == nil {