Files
notedeck/src/parser.rs
William Casarin d591c694dd Add simple parser
Just getting warmed up. This will be used for note parsing.
2023-06-28 23:24:47 -04:00

42 lines
813 B
Rust

use log::info;
struct Parser<'a> {
data: &'a str,
pos: usize,
}
impl<'a> Parser<'a> {
fn new(data: &'a str) -> Parser {
Parser { data: data, pos: 0 }
}
fn parse_until(&mut self, needle: char) -> bool {
let mut count = 0;
for c in self.data[self.pos..].chars() {
if c == needle {
self.pos += count - 1;
return true;
} else {
count += 1;
}
}
return false;
}
}
#[cfg(test)]
mod test {
use super::*;
#[test]
fn test_parser() {
let s = "hey there #hashtag";
let mut parser = Parser::new(s);
parser.parse_until('#');
assert_eq!(parser.pos, 9);
parser.parse_until('t');
assert_eq!(parser.pos, 14);
}
}