From 32b19d68d0c621b9d359b7b2b2e663c0cd4d2287 Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Thu, 14 Sep 2023 02:24:06 -0400 Subject: [PATCH] Support todo keywords with fast access. --- src/parser/keyword_todo.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/parser/keyword_todo.rs b/src/parser/keyword_todo.rs index 5a009ea..821f974 100644 --- a/src/parser/keyword_todo.rs +++ b/src/parser/keyword_todo.rs @@ -44,9 +44,17 @@ pub(crate) fn todo_keywords<'s>(input: &'s str) -> Res<&'s str, (Vec<&'s str>, V } fn todo_keyword_word<'s>(input: &'s str) -> Res<&'s str, &'s str> { - verify(take_till(|c| " \t\r\n|".contains(c)), |result: &str| { + let (remaining, keyword) = verify(take_till(|c| "( \t\r\n|".contains(c)), |result: &str| { !result.is_empty() - })(input) + })(input)?; + + let (remaining, _) = opt(tuple(( + tag("("), + take_till(|c| "() \t\r\n|".contains(c)), + tag(")"), + )))(remaining)?; + + Ok((remaining, keyword)) } #[cfg(test)] mod tests {