From 3eff85059a2af3bdf960033b866f4abf7c81fc49 Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Mon, 16 Oct 2023 13:35:03 -0400 Subject: [PATCH] Add support for planning before property drawer when calculating additional properties for headlines. --- .../headline/planning_before_property_drawer.org | 7 +++++++ src/types/document.rs | 8 ++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 org_mode_samples/greater_element/property_drawer/headline/planning_before_property_drawer.org diff --git a/org_mode_samples/greater_element/property_drawer/headline/planning_before_property_drawer.org b/org_mode_samples/greater_element/property_drawer/headline/planning_before_property_drawer.org new file mode 100644 index 00000000..b158a2b4 --- /dev/null +++ b/org_mode_samples/greater_element/property_drawer/headline/planning_before_property_drawer.org @@ -0,0 +1,7 @@ +** Foo +DEADLINE: <2023-10-16 Mon> +:PROPERTIES: +:foo: *a* +:Bar: *b* +:BAZ: *c* +:END: diff --git a/src/types/document.rs b/src/types/document.rs index 11022615..eacf8583 100644 --- a/src/types/document.rs +++ b/src/types/document.rs @@ -101,11 +101,15 @@ impl<'s> Heading<'s> { _ => None, }) .flat_map(|section| section.children.iter()) - .take(1) - .filter_map(|element| match element { + .take_while(|element| match element { + Element::Planning(_) | Element::PropertyDrawer(_) => true, + _ => false, + }) + .find_map(|element| match element { Element::PropertyDrawer(property_drawer) => Some(property_drawer), _ => None, }) + .into_iter() .flat_map(|property_drawer| property_drawer.children.iter()) } }