Minimal Imperative Parsing Library | https://docs.rs/mipl
1use mipl::prelude::*;
2
3fn first_emphasized_in_line(parser: &mut Parser) -> Option<String> {
4 let mut return_next: bool = false;
5
6 for tok in parser {
7 if let Token::Str(s) = tok {
8 if s == "*" {
9 return_next = true;
10 } else if return_next {
11 return Some(String::from(s))
12 };
13 } else {
14 return None;
15 }
16 }
17
18 None
19}
20
21#[test]
22fn test_first_emphasized_in_line() {
23 let d_vec: Vec<char> = vec![' '];
24 let d_del = DiscardDelimiters::new(d_vec);
25 let k_vec: Vec<char> = vec!['*'];
26 let k_del = KeepDelimiters::new(k_vec);
27 let del_param = DelimitersParam {
28 keep: k_del, discard: d_del
29 };
30
31 let mut parser = Parser::from(
32 "Can this check for *emphasis*?",
33 del_param
34 );
35
36 assert_eq!("emphasis", first_emphasized_in_line(&mut parser).unwrap());
37}