[−][src]Crate muncher
muncher
is a library for lexing a string of text input. The main struct
Muncher
can be crated from any &str
and forks or peeking and seeking without
moving the cursor forward can be accomplished via fork
,
peek
and seek
.
Creation and Peeking
use muncher::Muncher; let input = "hello world"; let m = Muncher::new(input); assert_eq!(m.seek(5), Some("hello".to_string())); assert_eq!(m.peek(), Some(&' ')); assert_eq!(m.seek(5), Some("world".to_string())); assert!(m.peek().is_none());
let input = "abcde"; let mut munch = Muncher::new(input); assert_eq!(munch.eat(), Some('a')); let fork = munch.fork(); assert_eq!(fork.peek(), Some(&'b')); assert_eq!(munch.eat(), Some('b'));
Muncher
has many eat_*
methods as well as eat
that are used to advance
the cursor. eat
returns an Option<char>
if you want to use the returned char.
Another way of advancing the cursor is the eat_until
,
eat_until_count
and eat_range_of
methods.
eat_until
use muncher::Muncher; let input = "abcde"; let mut munch = Muncher::new(input); let text = munch.eat_until(|ch| ch == &'d').collect::<String>(); assert_eq!(text, "abc"); assert_eq!(munch.eat(), Some('d'));
eat_until_count
works the same but returns (usize, usize) as (start, end).
eat_range_of
use muncher::Muncher; let input = "abcde"; let mut munch = Muncher::new(input); let (start, end) = munch.eat_range_of("d"); assert_eq!(&munch.text()[start..end], "abc"); assert_eq!(munch.eat(), Some('d'));
Structs
Fork | |
Muncher | |
Stack |
Enums
StackResult |