aboutsummaryrefslogtreecommitdiff
path: root/src/Search/CharSource.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/Search/CharSource.php')
-rw-r--r--src/Search/CharSource.php33
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