diff options
Diffstat (limited to 'src/Search/CharSource.php')
-rw-r--r-- | src/Search/CharSource.php | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/Search/CharSource.php b/src/Search/CharSource.php new file mode 100644 index 0000000..165e538 --- /dev/null +++ b/src/Search/CharSource.php @@ -0,0 +1,33 @@ +<?php + + +namespace Micropoly\Search; + + +class CharSource +{ + private string $s; + private int $i = 0; + private int $len; + + public function __construct(string $s) + { + $this->s = $s; + $this->len = mb_strlen($s); + } + + public function getNext(): ?string + { + if ($this->i >= $this->len) + return null; + + $c = mb_substr($this->s, $this->i, 1); + $this->i++; + return $c; + } + + public function unget(): void + { + $this->i = max(0, $this->i - 1); + } +}
\ No newline at end of file |