diff --git a/src/parser/statistics_cookie.rs b/src/parser/statistics_cookie.rs index af919d1..3d0fd22 100644 --- a/src/parser/statistics_cookie.rs +++ b/src/parser/statistics_cookie.rs @@ -40,7 +40,7 @@ fn percent_statistics_cookie<'b, 'g, 'r, 's>( tag("%]"), )))(input)?; let value = get_consumed(input, remaining); - let (remaining, _trailing_whitespace) = + let (remaining, post_blank) = maybe_consume_object_trailing_whitespace_if_not_exiting(context, remaining)?; let source = get_consumed(input, remaining); Ok(( @@ -48,6 +48,7 @@ fn percent_statistics_cookie<'b, 'g, 'r, 's>( StatisticsCookie { source: source.into(), value: value.into(), + post_blank: post_blank.map(Into::<&str>::into), }, )) } @@ -68,7 +69,7 @@ fn fraction_statistics_cookie<'b, 'g, 'r, 's>( tag("]"), )))(input)?; let value = get_consumed(input, remaining); - let (remaining, _trailing_whitespace) = + let (remaining, post_blank) = maybe_consume_object_trailing_whitespace_if_not_exiting(context, remaining)?; let source = get_consumed(input, remaining); Ok(( @@ -76,6 +77,7 @@ fn fraction_statistics_cookie<'b, 'g, 'r, 's>( StatisticsCookie { source: source.into(), value: value.into(), + post_blank: post_blank.map(Into::<&str>::into), }, )) } diff --git a/src/types/object.rs b/src/types/object.rs index a546347..6fbc87b 100644 --- a/src/types/object.rs +++ b/src/types/object.rs @@ -263,6 +263,7 @@ pub struct Target<'s> { pub struct StatisticsCookie<'s> { pub source: &'s str, pub value: &'s str, + pub post_blank: Option<&'s str>, } #[derive(Debug)] @@ -894,11 +895,15 @@ impl<'s> StandardProperties<'s> for StatisticsCookie<'s> { } fn get_contents<'b>(&'b self) -> Option<&'s str> { - todo!() + None } fn get_post_blank(&self) -> PostBlank { - todo!() + self.post_blank + .map(|post_blank| post_blank.chars().count()) + .unwrap_or(0) + .try_into() + .expect("Too much post-blank to fit into a PostBlank.") } }