diff --git a/src/parser/token.rs b/src/parser/token.rs index e7c3a97..028f859 100644 --- a/src/parser/token.rs +++ b/src/parser/token.rs @@ -2,6 +2,7 @@ use super::Document; use super::Element; use super::Heading; use super::Object; +use super::PlainListItem; use super::Section; use crate::parser::DocumentElement; @@ -11,6 +12,7 @@ pub enum Token<'r, 's> { Section(&'r Section<'s>), Object(&'r Object<'s>), Element(&'r Element<'s>), + PlainListItem(&'r PlainListItem<'s>), } impl<'r, 's> Token<'r, 's> { @@ -30,8 +32,47 @@ impl<'r, 's> Token<'r, 's> { }), )), Token::Section(section) => Box::new(section.children.iter().map(Token::Element)), - Token::Object(_) => panic!(), - Token::Element(_) => panic!(), + Token::Object(obj) => match obj { + Object::Bold(_) => todo!(), + Object::Italic(_) => todo!(), + Object::Underline(_) => todo!(), + Object::StrikeThrough(_) => todo!(), + Object::Code(_) => todo!(), + Object::Verbatim(_) => todo!(), + Object::PlainText(_) => todo!(), + Object::RegularLink(_) => todo!(), + Object::RadioLink(_) => todo!(), + Object::RadioTarget(_) => todo!(), + Object::PlainLink(_) => todo!(), + Object::AngleLink(_) => todo!(), + Object::OrgMacro(_) => todo!(), + }, + Token::Element(elem) => match elem { + Element::Paragraph(inner) => Box::new(inner.children.iter().map(Token::Object)), + Element::PlainList(inner) => { + 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!(), + }, + Token::PlainListItem(elem) => Box::new(elem.children.iter().map(Token::Element)), } } }