diff --git a/src/parser/latex_fragment.rs b/src/parser/latex_fragment.rs index e4ade8a..413981d 100644 --- a/src/parser/latex_fragment.rs +++ b/src/parser/latex_fragment.rs @@ -39,7 +39,7 @@ pub(crate) fn latex_fragment<'b, 'g, 'r, 's>( parser_with_context!(bordered_dollar_fragment)(context), ))(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(( @@ -47,6 +47,7 @@ pub(crate) fn latex_fragment<'b, 'g, 'r, 's>( LatexFragment { 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 07555cd..a546347 100644 --- a/src/types/object.rs +++ b/src/types/object.rs @@ -194,6 +194,7 @@ pub struct Entity<'s> { pub struct LatexFragment<'s> { pub source: &'s str, pub value: &'s str, + pub post_blank: Option<&'s str>, } #[derive(Debug)] @@ -759,11 +760,15 @@ impl<'s> StandardProperties<'s> for LatexFragment<'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.") } }