Fix get_contents for sections.
This commit is contained in:
parent
ffa5349f25
commit
7b8fa1eb4a
@ -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,
|
||||||
},
|
},
|
||||||
|
@ -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 {
|
||||||
|
Loading…
Reference in New Issue
Block a user