Add detect element functions for all elements that can be reasonably detected more efficiently than just parsing normally.

This commit is contained in:
Tom Alexander
2023-09-11 12:28:15 -04:00
parent aa5988bc2f
commit f54081437a
6 changed files with 52 additions and 6 deletions

View File

@@ -23,9 +23,7 @@ pub fn diary_sexp<'b, 'g, 'r, 's>(
input: OrgSource<'s>,
) -> Res<OrgSource<'s>, DiarySexp<'s>> {
start_of_line(input)?;
let (remaining, _leading_whitespace) = space0(input)?;
let (remaining, _clock) = tag("%%")(remaining)?;
let (remaining, _gap_whitespace) = space0(remaining)?;
let (remaining, _clock) = tag("%%")(input)?;
let (remaining, _sexp) = recognize(sexp)(remaining)?;
let (remaining, _trailing_comment) = opt(tuple((
space0,
@@ -43,3 +41,9 @@ pub fn diary_sexp<'b, 'g, 'r, 's>(
},
))
}
#[cfg_attr(feature = "tracing", tracing::instrument(ret, level = "debug"))]
pub fn detect_diary_sexp<'s>(input: OrgSource<'s>) -> Res<OrgSource<'s>, ()> {
tuple((start_of_line, tag("%%(")))(input)?;
Ok((input, ()))
}