Fix get_contents for sections.

This commit is contained in:
Tom Alexander 2023-12-15 13:21:58 -05:00
parent ffa5349f25
commit 7b8fa1eb4a
Signed by: talexander
GPG Key ID: D3A179C9A53C0EDE
2 changed files with 5 additions and 9 deletions

View File

@ -1,4 +1,3 @@
use nom::combinator::consumed;
use nom::combinator::opt; use nom::combinator::opt;
use nom::combinator::recognize; use nom::combinator::recognize;
use nom::combinator::verify; use nom::combinator::verify;
@ -59,12 +58,12 @@ pub(crate) fn zeroth_section<'b, 'g, 'r, 's>(
many0(blank_line), many0(blank_line),
)))(input)?; )))(input)?;
let (remaining, (contents, (mut children, _exit_contents))) = consumed(verify( let (remaining, (mut children, _exit_contents)) = verify(
many_till(element_matcher, exit_matcher), many_till(element_matcher, exit_matcher),
|(children, _exit_contents)| { |(children, _exit_contents)| {
!children.is_empty() || comment_and_property_drawer_element.is_some() !children.is_empty() || comment_and_property_drawer_element.is_some()
}, },
))(remaining)?; )(remaining)?;
if let Some((comment, property_drawer, _ws)) = comment_and_property_drawer_element { if let Some((comment, property_drawer, _ws)) = comment_and_property_drawer_element {
children.insert(0, Element::PropertyDrawer(property_drawer)); children.insert(0, Element::PropertyDrawer(property_drawer));
@ -81,7 +80,6 @@ pub(crate) fn zeroth_section<'b, 'g, 'r, 's>(
remaining, remaining,
Section { Section {
source: source.into(), source: source.into(),
contents: Some(contents.into()),
post_blank: post_blank.map(Into::<&str>::into), post_blank: post_blank.map(Into::<&str>::into),
children, children,
}, },
@ -118,12 +116,12 @@ pub(crate) fn section<'b, 'g, 'r, 's>(
remaining = remain; remaining = remain;
input = remain; input = remain;
} }
let (remaining, (contents, (mut children, _exit_contents))) = consumed(verify( let (remaining, (mut children, _exit_contents)) = verify(
many_till(element_matcher, exit_matcher), many_till(element_matcher, exit_matcher),
|(children, _exit_contents)| { |(children, _exit_contents)| {
!children.is_empty() || property_drawer_element.is_some() || planning_element.is_some() !children.is_empty() || property_drawer_element.is_some() || planning_element.is_some()
}, },
))(remaining)?; )(remaining)?;
if let Some(ele) = property_drawer_element.map(Element::PropertyDrawer) { if let Some(ele) = property_drawer_element.map(Element::PropertyDrawer) {
children.insert(0, ele); children.insert(0, ele);
} }
@ -139,7 +137,6 @@ pub(crate) fn section<'b, 'g, 'r, 's>(
remaining, remaining,
Section { Section {
source: source.into(), source: source.into(),
contents: Some(contents.into()),
post_blank: post_blank.map(Into::<&str>::into), post_blank: post_blank.map(Into::<&str>::into),
children, children,
}, },

View File

@ -41,7 +41,6 @@ pub struct Heading<'s> {
#[derive(Debug)] #[derive(Debug)]
pub struct Section<'s> { pub struct Section<'s> {
pub source: &'s str, pub source: &'s str,
pub contents: Option<&'s str>,
pub post_blank: Option<&'s str>, pub post_blank: Option<&'s str>,
pub children: Vec<Element<'s>>, pub children: Vec<Element<'s>>,
} }
@ -102,7 +101,7 @@ impl<'s> StandardProperties<'s> for Section<'s> {
} }
fn get_contents<'b>(&'b self) -> Option<&'s str> { fn get_contents<'b>(&'b self) -> Option<&'s str> {
self.contents Some(self.source)
} }
fn get_post_blank(&self) -> PostBlank { fn get_post_blank(&self) -> PostBlank {