diff --git a/org_mode_samples/lesser_element/diary_sexp/not_real_sexp.org b/org_mode_samples/lesser_element/diary_sexp/not_real_sexp.org new file mode 100644 index 00000000..2421727a --- /dev/null +++ b/org_mode_samples/lesser_element/diary_sexp/not_real_sexp.org @@ -0,0 +1,6 @@ +%%(foo +) + +%%(bar ; baz + +lorem diff --git a/src/parser/diary_sexp.rs b/src/parser/diary_sexp.rs index 376b18c8..8d583441 100644 --- a/src/parser/diary_sexp.rs +++ b/src/parser/diary_sexp.rs @@ -1,16 +1,11 @@ use nom::branch::alt; +use nom::bytes::complete::is_not; use nom::bytes::complete::tag; -use nom::character::complete::anychar; use nom::character::complete::line_ending; -use nom::character::complete::space0; use nom::combinator::eof; -use nom::combinator::opt; -use nom::combinator::recognize; -use nom::multi::many_till; use nom::sequence::tuple; use super::org_source::OrgSource; -use super::sexp::sexp; use crate::context::RefContext; use crate::error::Res; use crate::parser::util::get_consumed; @@ -23,15 +18,9 @@ pub fn diary_sexp<'b, 'g, 'r, 's>( input: OrgSource<'s>, ) -> Res, DiarySexp<'s>> { start_of_line(input)?; - let (remaining, _clock) = tag("%%")(input)?; - let (remaining, _sexp) = recognize(sexp)(remaining)?; - let (remaining, _trailing_comment) = opt(tuple(( - space0, - tag(";"), - many_till(anychar, alt((line_ending, eof))), - )))(remaining)?; - let (remaining, _trailing_whitespace) = - recognize(tuple((space0, alt((line_ending, eof)))))(remaining)?; + let (remaining, _clock) = tag("%%(")(input)?; + let (remaining, _contents) = is_not("\r\n")(remaining)?; + let (remaining, _eol) = alt((line_ending, eof))(remaining)?; let source = get_consumed(input, remaining); Ok((