From 9bbf0e5f0310740f19d6f4345b20b7432a228adc Mon Sep 17 00:00:00 2001 From: Matt Sherman Date: Mon, 29 Jul 2024 13:00:06 -0400 Subject: [PATCH] tighten up the enum --- iterator.go | 18 ++++++++++++------ mode.go | 11 ----------- 2 files changed, 12 insertions(+), 17 deletions(-) delete mode 100644 mode.go diff --git a/iterator.go b/iterator.go index 45c68dd..72bf564 100644 --- a/iterator.go +++ b/iterator.go @@ -10,6 +10,15 @@ type seq interface { ~string | ~[]byte } +type mode byte + +const ( + done mode = iota + any + sequence + emptySeparator +) + type funcs[T seq] struct { Index func(s T, sep T) int IndexByte func(s T, c byte) int @@ -20,7 +29,7 @@ type funcs[T seq] struct { func split[T seq](s T, sep T, funcs funcs[T]) *Iterator[T] { var mode = sequence if len(sep) == 0 { - mode = emptySequence + mode = emptySeparator } return &Iterator[T]{ @@ -34,7 +43,7 @@ func split[T seq](s T, sep T, funcs funcs[T]) *Iterator[T] { func splitAny[T seq](s T, separators T, funcs funcs[T]) *Iterator[T] { var mode = any if len(separators) == 0 { - mode = emptySequence + mode = emptySeparator } return &Iterator[T]{ @@ -50,7 +59,6 @@ func splitAny[T seq](s T, separators T, funcs funcs[T]) *Iterator[T] { type Iterator[T seq] struct { funcs[T] input T - separator byte separators T mode mode start, end int @@ -73,14 +81,12 @@ func (it *Iterator[T]) Next() bool { switch it.mode { case done: return false - case singleElement: - index = it.IndexByte(slice, it.separator) case any: index = it.IndexAny(slice, string(it.separators)) case sequence: index = it.Index(slice, it.separators) separatorLength = len(it.separators) - case emptySequence: + case emptySeparator: _, index = it.DecodeRune(slice) if index == 0 { return false diff --git a/mode.go b/mode.go deleted file mode 100644 index 8708ad3..0000000 --- a/mode.go +++ /dev/null @@ -1,11 +0,0 @@ -package split - -type mode int - -const ( - done mode = iota - singleElement - any - sequence - emptySequence -)