diff --git a/src/types/document.rs b/src/types/document.rs index 3437586..1102261 100644 --- a/src/types/document.rs +++ b/src/types/document.rs @@ -93,8 +93,7 @@ impl<'s> Heading<'s> { } pub fn get_additional_properties(&self) -> impl Iterator> { - let foo = self - .children + self.children .iter() .take(1) .filter_map(|c| match c { @@ -107,7 +106,28 @@ impl<'s> Heading<'s> { Element::PropertyDrawer(property_drawer) => Some(property_drawer), _ => None, }) - .flat_map(|property_drawer| property_drawer.children.iter()); - foo + .flat_map(|property_drawer| property_drawer.children.iter()) + } +} + +impl<'s> Document<'s> { + pub fn get_additional_properties(&self) -> impl Iterator> { + let zeroth_section_children = self + .zeroth_section + .iter() + .flat_map(|zeroth_section| zeroth_section.children.iter()); + let property_drawer = zeroth_section_children + .take_while(|element| match element { + Element::Comment(_) => true, + Element::PropertyDrawer(_) => true, + _ => false, + }) + .find_map(|element| match element { + Element::PropertyDrawer(property_drawer) => Some(property_drawer), + _ => None, + }); + property_drawer + .into_iter() + .flat_map(|property_drawer| property_drawer.children.iter()) } }