From 5edaa60802378609d45b0c4c1d6b35f9f78db290 Mon Sep 17 00:00:00 2001 From: Botahamec Date: Sat, 29 Jul 2023 21:42:15 -0400 Subject: Add some string analysis methods --- src/scanner.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/scanner.rs') diff --git a/src/scanner.rs b/src/scanner.rs index e007f2f..ee7d50b 100644 --- a/src/scanner.rs +++ b/src/scanner.rs @@ -34,4 +34,24 @@ impl Scanner { pub fn advance(&mut self, amount: usize) -> Option { self.goto(self.position + amount) } + + pub fn find_substring(&self, substring: impl AsRef) -> Option { + self.source + .get(self.position..)? + .iter() + .collect::() + .find(substring.as_ref()) + } + + pub fn starts_with(&self, substring: impl AsRef) -> Option { + let mut i = self.position; + for substring_char in substring.as_ref().chars() { + if *self.source.get(i)? != substring_char { + return None; + } + i += 1; + } + + Some(i) + } } -- cgit v1.2.3