From 08e6efe5f59302a552cea2732917453c411dad8e Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Fri, 14 Jul 2023 20:18:30 -0400 Subject: [PATCH] Filling in more of the iter_tokens tree. --- src/parser/token.rs | 44 ++++++++++++++++++++++++++------------------ 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/src/parser/token.rs b/src/parser/token.rs index 028f859..dbfbdda 100644 --- a/src/parser/token.rs +++ b/src/parser/token.rs @@ -4,6 +4,8 @@ use super::Heading; use super::Object; use super::PlainListItem; use super::Section; +use super::TableCell; +use super::TableRow; use crate::parser::DocumentElement; pub enum Token<'r, 's> { @@ -13,6 +15,8 @@ pub enum Token<'r, 's> { Object(&'r Object<'s>), Element(&'r Element<'s>), PlainListItem(&'r PlainListItem<'s>), + TableRow(&'r TableRow<'s>), + TableCell(&'r TableCell<'s>), } impl<'r, 's> Token<'r, 's> { @@ -53,26 +57,30 @@ impl<'r, 's> Token<'r, 's> { Box::new(inner.children.iter().map(Token::PlainListItem)) } Element::GreaterBlock(inner) => Box::new(inner.children.iter().map(Token::Element)), - Element::DynamicBlock(_) => todo!(), - Element::FootnoteDefinition(_) => todo!(), - Element::Comment(_) => todo!(), - Element::Drawer(_) => todo!(), - Element::PropertyDrawer(_) => todo!(), - Element::Table(_) => todo!(), - Element::VerseBlock(_) => todo!(), - Element::CommentBlock(_) => todo!(), - Element::ExampleBlock(_) => todo!(), - Element::ExportBlock(_) => todo!(), - Element::SrcBlock(_) => todo!(), - Element::Clock(_) => todo!(), - Element::DiarySexp(_) => todo!(), - Element::Planning(_) => todo!(), - Element::FixedWidthArea(_) => todo!(), - Element::HorizontalRule(_) => todo!(), - Element::Keyword(_) => todo!(), - Element::LatexEnvironment(_) => todo!(), + Element::DynamicBlock(inner) => Box::new(inner.children.iter().map(Token::Element)), + Element::FootnoteDefinition(inner) => { + Box::new(inner.children.iter().map(Token::Element)) + } + Element::Comment(_) => Box::new(std::iter::empty()), + Element::Drawer(inner) => Box::new(inner.children.iter().map(Token::Element)), + Element::PropertyDrawer(_) => Box::new(std::iter::empty()), + Element::Table(inner) => Box::new(inner.children.iter().map(Token::TableRow)), + Element::VerseBlock(inner) => Box::new(inner.children.iter().map(Token::Object)), + Element::CommentBlock(_) => Box::new(std::iter::empty()), + Element::ExampleBlock(_) => Box::new(std::iter::empty()), + Element::ExportBlock(_) => Box::new(std::iter::empty()), + Element::SrcBlock(_) => Box::new(std::iter::empty()), + Element::Clock(_) => Box::new(std::iter::empty()), + Element::DiarySexp(_) => Box::new(std::iter::empty()), + Element::Planning(_) => Box::new(std::iter::empty()), + Element::FixedWidthArea(_) => Box::new(std::iter::empty()), + Element::HorizontalRule(_) => Box::new(std::iter::empty()), + Element::Keyword(_) => Box::new(std::iter::empty()), + Element::LatexEnvironment(_) => Box::new(std::iter::empty()), }, Token::PlainListItem(elem) => Box::new(elem.children.iter().map(Token::Element)), + Token::TableRow(elem) => Box::new(elem.children.iter().map(Token::TableCell)), + Token::TableCell(elem) => Box::new(elem.children.iter().map(Token::Object)), } } }