From ab377b2cc5f5b6015e25d99c6e41dbe559832a45 Mon Sep 17 00:00:00 2001 From: PoiScript Date: Wed, 30 Oct 2019 21:05:37 +0800 Subject: [PATCH] feat: Org::keywords function --- src/org.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/org.rs b/src/org.rs index 9f16f96..442ce82 100644 --- a/src/org.rs +++ b/src/org.rs @@ -4,7 +4,7 @@ use std::ops::{Index, IndexMut}; use crate::{ config::{ParseConfig, DEFAULT_CONFIG}, - elements::Element, + elements::{Element, Keyword}, export::{DefaultHtmlHandler, DefaultOrgHandler, HtmlHandler, OrgHandler}, parsers::{blank_lines, parse_container, Container}, }; @@ -78,6 +78,17 @@ impl<'a> Org<'a> { }) } + /// Returns an iterator of `Keyword`s. + pub fn keywords(&self) -> impl Iterator> { + self.root + .descendants(&self.arena) + .skip(1) + .filter_map(move |node| match &self[node] { + Element::Keyword(kw) => Some(kw), + _ => None, + }) + } + /// Writes an `Org` struct as html format. pub fn write_html(&self, writer: W) -> Result<(), Error> where