From 0d7a15bfeb0a799c5a0cde7755dd374eb2971903 Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Fri, 8 Sep 2023 18:35:33 -0400 Subject: [PATCH] Handle spaces after statistics cookies. --- .../sections_and_headings/statistics_cookie_with_space.org | 1 + src/parser/statistics_cookie.rs | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 org_mode_samples/sections_and_headings/statistics_cookie_with_space.org diff --git a/org_mode_samples/sections_and_headings/statistics_cookie_with_space.org b/org_mode_samples/sections_and_headings/statistics_cookie_with_space.org new file mode 100644 index 00000000..6e000eff --- /dev/null +++ b/org_mode_samples/sections_and_headings/statistics_cookie_with_space.org @@ -0,0 +1 @@ +* [0/4] foo diff --git a/src/parser/statistics_cookie.rs b/src/parser/statistics_cookie.rs index 22ec3f5a..21f52bf3 100644 --- a/src/parser/statistics_cookie.rs +++ b/src/parser/statistics_cookie.rs @@ -4,6 +4,7 @@ use nom::combinator::recognize; use nom::sequence::tuple; use super::org_source::OrgSource; +use super::util::get_consumed; use super::util::maybe_consume_object_trailing_whitespace_if_not_exiting; use crate::context::parser_with_context; use crate::context::RefContext; @@ -26,10 +27,11 @@ pub fn percent_statistics_cookie<'b, 'g, 'r, 's>( context: RefContext<'b, 'g, 'r, 's>, input: OrgSource<'s>, ) -> Res, StatisticsCookie<'s>> { - let (remaining, source) = + let (remaining, _) = recognize(tuple((tag("["), nom::character::complete::u64, tag("%]"))))(input)?; let (remaining, _trailing_whitespace) = maybe_consume_object_trailing_whitespace_if_not_exiting(context, remaining)?; + let source = get_consumed(input, remaining); Ok(( remaining, StatisticsCookie { @@ -43,7 +45,7 @@ pub fn fraction_statistics_cookie<'b, 'g, 'r, 's>( context: RefContext<'b, 'g, 'r, 's>, input: OrgSource<'s>, ) -> Res, StatisticsCookie<'s>> { - let (remaining, source) = recognize(tuple(( + let (remaining, _) = recognize(tuple(( tag("["), nom::character::complete::u64, tag("/"), @@ -52,6 +54,7 @@ pub fn fraction_statistics_cookie<'b, 'g, 'r, 's>( )))(input)?; let (remaining, _trailing_whitespace) = maybe_consume_object_trailing_whitespace_if_not_exiting(context, remaining)?; + let source = get_consumed(input, remaining); Ok(( remaining, StatisticsCookie {