diff --git a/src/parser/export_snippet.rs b/src/parser/export_snippet.rs index c588f5f..bff0f37 100644 --- a/src/parser/export_snippet.rs +++ b/src/parser/export_snippet.rs @@ -39,7 +39,7 @@ pub(crate) fn export_snippet<'b, 'g, 'r, 's>( parser_with_context!(contents)(&parser_context), )))(remaining)?; let (remaining, _) = tag("@@")(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 @@ pub(crate) fn export_snippet<'b, 'g, 'r, 's>( source: source.into(), backend: backend_name.into(), contents: backend_contents.map(|(_colon, backend_contents)| backend_contents.into()), + post_blank: post_blank.map(Into::<&str>::into), }, )) } diff --git a/src/types/object.rs b/src/types/object.rs index 894cc1a..892616a 100644 --- a/src/types/object.rs +++ b/src/types/object.rs @@ -206,6 +206,7 @@ pub struct ExportSnippet<'s> { pub source: &'s str, pub backend: &'s str, pub contents: Option<&'s str>, + pub post_blank: Option<&'s str>, } #[derive(Debug)] @@ -802,11 +803,15 @@ impl<'s> StandardProperties<'s> for ExportSnippet<'s> { } fn get_contents<'b>(&'b self) -> Option<&'s str> { - todo!() + None } fn get_post_blank(&self) -> PostBlank { - todo!() + self.post_blank + .map(|text| text.chars().count()) + .unwrap_or(0) + .try_into() + .expect("Too much post-blank to fit into a PostBlank.") } }