From eabffe5eccd7ad9194b4bdf7543dbaae8da7e19f Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Sat, 2 Sep 2023 19:08:01 -0400 Subject: [PATCH] Move over the rest of the types. --- src/lib.rs | 2 +- src/parser/angle_link.rs | 5 -- src/parser/citation.rs | 5 -- src/parser/citation_reference.rs | 5 -- src/parser/clock.rs | 2 - src/parser/comment.rs | 3 -- src/parser/diary_sexp.rs | 1 - src/parser/document.rs | 64 ---------------------- src/parser/drawer.rs | 6 --- src/parser/dynamic_block.rs | 6 --- src/parser/element_parser.rs | 3 -- src/parser/entity.rs | 1 - src/parser/export_snippet.rs | 5 -- src/parser/fixed_width_area.rs | 2 - src/parser/footnote_definition.rs | 5 -- src/parser/footnote_reference.rs | 5 -- src/parser/greater_block.rs | 6 --- src/parser/horizontal_rule.rs | 1 - src/parser/inline_babel_call.rs | 5 -- src/parser/inline_source_block.rs | 5 -- src/parser/keyword.rs | 1 - src/parser/latex_environment.rs | 5 -- src/parser/latex_fragment.rs | 2 - src/parser/lesser_block.rs | 5 -- src/parser/line_break.rs | 1 - src/parser/mod.rs | 68 ------------------------ src/parser/object_parser.rs | 1 - src/parser/org_macro.rs | 1 - src/parser/org_source.rs | 2 +- src/parser/paragraph.rs | 4 -- src/parser/plain_link.rs | 4 -- src/parser/plain_list.rs | 5 -- src/parser/plain_text.rs | 3 -- src/parser/property_drawer.rs | 5 -- src/parser/radio_link.rs | 6 --- src/parser/regular_link.rs | 6 --- src/parser/statistics_cookie.rs | 1 - src/parser/subscript_and_superscript.rs | 6 --- src/parser/table.rs | 6 --- src/parser/target.rs | 5 -- src/parser/text_markup.rs | 5 -- src/parser/timestamp.rs | 6 --- src/parser/token.rs | 4 -- src/parser/util.rs | 2 - src/types/document.rs | 56 +++++++++++++++++++ src/{parser => types}/element.rs | 2 - src/{parser => types}/greater_element.rs | 1 - src/{parser => types}/lesser_element.rs | 1 - src/types/mod.rs | 65 ++++++++++++++++++++++ src/{parser => types}/object.rs | 2 - src/{parser => types}/source.rs | 0 51 files changed, 123 insertions(+), 295 deletions(-) create mode 100644 src/types/document.rs rename src/{parser => types}/element.rs (98%) rename src/{parser => types}/greater_element.rs (98%) rename src/{parser => types}/lesser_element.rs (99%) rename src/{parser => types}/object.rs (99%) rename src/{parser => types}/source.rs (100%) diff --git a/src/lib.rs b/src/lib.rs index 4c2021c..c481b7d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -18,4 +18,4 @@ pub use compare::get_org_mode_version; mod context; mod error; pub mod parser; -mod types; +pub mod types; diff --git a/src/parser/angle_link.rs b/src/parser/angle_link.rs index 423e17a..800ba05 100644 --- a/src/parser/angle_link.rs +++ b/src/parser/angle_link.rs @@ -6,12 +6,7 @@ use nom::multi::many_till; use super::org_source::OrgSource; use super::util::maybe_consume_object_trailing_whitespace_if_not_exiting; -use super::Context; use crate::error::Res; -use crate::parser::exiting::ExitClass; -use crate::parser::parser_context::ContextElement; -use crate::parser::parser_context::ExitMatcherNode; -use crate::parser::parser_with_context::parser_with_context; use crate::parser::plain_link::protocol; use crate::parser::util::exit_matcher_parser; use crate::parser::util::get_consumed; diff --git a/src/parser/citation.rs b/src/parser/citation.rs index c06813b..05636b8 100644 --- a/src/parser/citation.rs +++ b/src/parser/citation.rs @@ -14,17 +14,12 @@ use super::citation_reference::must_balance_bracket; use super::org_source::BracketDepth; use super::org_source::OrgSource; use super::util::maybe_consume_object_trailing_whitespace_if_not_exiting; -use super::Context; use crate::error::CustomError; use crate::error::Res; use crate::parser::citation_reference::citation_reference; use crate::parser::citation_reference::citation_reference_key; -use crate::parser::exiting::ExitClass; use crate::parser::object::Citation; use crate::parser::object_parser::standard_set_object; -use crate::parser::parser_context::ContextElement; -use crate::parser::parser_context::ExitMatcherNode; -use crate::parser::parser_with_context::parser_with_context; use crate::parser::util::exit_matcher_parser; use crate::parser::util::get_consumed; use crate::parser::Object; diff --git a/src/parser/citation_reference.rs b/src/parser/citation_reference.rs index 0024fc3..dbad243 100644 --- a/src/parser/citation_reference.rs +++ b/src/parser/citation_reference.rs @@ -12,16 +12,11 @@ use nom::sequence::tuple; use super::org_source::BracketDepth; use super::org_source::OrgSource; -use super::Context; use crate::error::CustomError; use crate::error::MyError; use crate::error::Res; -use crate::parser::exiting::ExitClass; use crate::parser::object::CitationReference; use crate::parser::object_parser::minimal_set_object; -use crate::parser::parser_context::ContextElement; -use crate::parser::parser_context::ExitMatcherNode; -use crate::parser::parser_with_context::parser_with_context; use crate::parser::util::exit_matcher_parser; use crate::parser::util::get_consumed; use crate::parser::util::WORD_CONSTITUENT_CHARACTERS; diff --git a/src/parser/clock.rs b/src/parser/clock.rs index 7731a0c..7731f23 100644 --- a/src/parser/clock.rs +++ b/src/parser/clock.rs @@ -12,9 +12,7 @@ use nom::combinator::verify; use nom::sequence::tuple; use super::org_source::OrgSource; -use super::Context; use crate::error::Res; -use crate::parser::parser_with_context::parser_with_context; use crate::parser::util::get_consumed; use crate::parser::util::start_of_line; use crate::parser::Clock; diff --git a/src/parser/comment.rs b/src/parser/comment.rs index d336721..12d346b 100644 --- a/src/parser/comment.rs +++ b/src/parser/comment.rs @@ -13,12 +13,9 @@ use nom::sequence::tuple; use super::org_source::OrgSource; use super::util::get_consumed; -use super::Context; use crate::error::CustomError; use crate::error::MyError; use crate::error::Res; -use crate::parser::parser_context::ContextElement; -use crate::parser::parser_with_context::parser_with_context; use crate::parser::util::exit_matcher_parser; use crate::parser::util::immediate_in_section; use crate::parser::util::start_of_line; diff --git a/src/parser/diary_sexp.rs b/src/parser/diary_sexp.rs index 691f990..3b186e2 100644 --- a/src/parser/diary_sexp.rs +++ b/src/parser/diary_sexp.rs @@ -11,7 +11,6 @@ use nom::sequence::tuple; use super::org_source::OrgSource; use super::sexp::sexp; -use super::Context; use crate::error::Res; use crate::parser::util::get_consumed; use crate::parser::util::start_of_line; diff --git a/src/parser/document.rs b/src/parser/document.rs index 1fc0dbd..0de809a 100644 --- a/src/parser/document.rs +++ b/src/parser/document.rs @@ -18,87 +18,23 @@ use nom::multi::separated_list1; use nom::sequence::tuple; use super::element::Element; -use super::list::List; use super::object::Object; use super::org_source::convert_error; use super::org_source::OrgSource; -use super::parser_with_context::parser_with_context; -use super::source::Source; use super::token::AllTokensIterator; use super::token::Token; use super::util::exit_matcher_parser; use super::util::get_consumed; use super::util::start_of_line; -use super::Context; use crate::error::Res; use crate::parser::comment::comment; use crate::parser::element_parser::element; -use crate::parser::exiting::ExitClass; use crate::parser::object_parser::standard_set_object; -use crate::parser::parser_context::ContextElement; -use crate::parser::parser_context::ExitMatcherNode; use crate::parser::planning::planning; use crate::parser::property_drawer::property_drawer; use crate::parser::util::blank_line; use crate::parser::util::maybe_consume_trailing_whitespace_if_not_exiting; -#[derive(Debug)] -pub struct Document<'s> { - pub source: &'s str, - pub zeroth_section: Option>, - pub children: Vec>, -} - -#[derive(Debug)] -pub struct Heading<'s> { - pub source: &'s str, - pub stars: usize, - pub todo_keyword: Option<&'s str>, - // TODO: add todo-type enum - pub title: Vec>, - pub tags: Vec<&'s str>, - pub children: Vec>, -} - -#[derive(Debug)] -pub struct Section<'s> { - pub source: &'s str, - pub children: Vec>, -} - -#[derive(Debug)] -pub enum DocumentElement<'s> { - Heading(Heading<'s>), - Section(Section<'s>), -} - -impl<'s> Source<'s> for Document<'s> { - fn get_source(&'s self) -> &'s str { - self.source - } -} - -impl<'s> Source<'s> for DocumentElement<'s> { - fn get_source(&'s self) -> &'s str { - match self { - DocumentElement::Heading(obj) => obj.source, - DocumentElement::Section(obj) => obj.source, - } - } -} - -impl<'s> Source<'s> for Section<'s> { - fn get_source(&'s self) -> &'s str { - self.source - } -} - -impl<'s> Source<'s> for Heading<'s> { - fn get_source(&'s self) -> &'s str { - self.source - } -} - #[cfg_attr(feature = "tracing", tracing::instrument(ret, level = "debug"))] #[allow(dead_code)] pub fn document(input: &str) -> Res<&str, Document> { diff --git a/src/parser/drawer.rs b/src/parser/drawer.rs index 213cc5e..c927a0b 100644 --- a/src/parser/drawer.rs +++ b/src/parser/drawer.rs @@ -11,16 +11,10 @@ use nom::multi::many_till; use nom::sequence::tuple; use super::org_source::OrgSource; -use super::Context; use crate::error::CustomError; use crate::error::MyError; use crate::error::Res; use crate::parser::element_parser::element; -use crate::parser::exiting::ExitClass; -use crate::parser::parser_context::ContextElement; -use crate::parser::parser_context::ExitMatcherNode; -use crate::parser::parser_with_context::parser_with_context; -use crate::parser::source::SetSource; use crate::parser::util::blank_line; use crate::parser::util::exit_matcher_parser; use crate::parser::util::get_consumed; diff --git a/src/parser/dynamic_block.rs b/src/parser/dynamic_block.rs index 679a701..178abb0 100644 --- a/src/parser/dynamic_block.rs +++ b/src/parser/dynamic_block.rs @@ -12,18 +12,12 @@ use nom::multi::many_till; use nom::sequence::tuple; use super::org_source::OrgSource; -use super::Context; use crate::error::CustomError; use crate::error::MyError; use crate::error::Res; use crate::parser::element_parser::element; -use crate::parser::exiting::ExitClass; use crate::parser::greater_element::DynamicBlock; use crate::parser::lesser_element::Paragraph; -use crate::parser::parser_context::ContextElement; -use crate::parser::parser_context::ExitMatcherNode; -use crate::parser::parser_with_context::parser_with_context; -use crate::parser::source::SetSource; use crate::parser::util::blank_line; use crate::parser::util::exit_matcher_parser; use crate::parser::util::get_consumed; diff --git a/src/parser/element_parser.rs b/src/parser/element_parser.rs index f9451ca..3d083d6 100644 --- a/src/parser/element_parser.rs +++ b/src/parser/element_parser.rs @@ -24,14 +24,11 @@ use super::org_source::OrgSource; use super::paragraph::paragraph; use super::plain_list::detect_plain_list; use super::plain_list::plain_list; -use super::source::SetSource; use super::util::get_consumed; use super::util::maybe_consume_trailing_whitespace_if_not_exiting; -use super::Context; use crate::error::CustomError; use crate::error::MyError; use crate::error::Res; -use crate::parser::parser_with_context::parser_with_context; use crate::parser::table::org_mode_table; pub const fn element( diff --git a/src/parser/entity.rs b/src/parser/entity.rs index 4683e1c..a01e24c 100644 --- a/src/parser/entity.rs +++ b/src/parser/entity.rs @@ -8,7 +8,6 @@ use nom::combinator::recognize; use super::org_source::OrgSource; use super::util::maybe_consume_object_trailing_whitespace_if_not_exiting; -use super::Context; use crate::error::CustomError; use crate::error::MyError; use crate::error::Res; diff --git a/src/parser/export_snippet.rs b/src/parser/export_snippet.rs index 85ef51b..b967ed6 100644 --- a/src/parser/export_snippet.rs +++ b/src/parser/export_snippet.rs @@ -9,12 +9,7 @@ use nom::sequence::tuple; use super::org_source::OrgSource; use super::util::maybe_consume_object_trailing_whitespace_if_not_exiting; -use super::Context; use crate::error::Res; -use crate::parser::exiting::ExitClass; -use crate::parser::parser_context::ContextElement; -use crate::parser::parser_context::ExitMatcherNode; -use crate::parser::parser_with_context::parser_with_context; use crate::parser::util::exit_matcher_parser; use crate::parser::util::get_consumed; use crate::parser::ExportSnippet; diff --git a/src/parser/fixed_width_area.rs b/src/parser/fixed_width_area.rs index 3660069..5822b8c 100644 --- a/src/parser/fixed_width_area.rs +++ b/src/parser/fixed_width_area.rs @@ -12,9 +12,7 @@ use nom::sequence::preceded; use nom::sequence::tuple; use super::org_source::OrgSource; -use super::Context; use crate::error::Res; -use crate::parser::parser_with_context::parser_with_context; use crate::parser::util::exit_matcher_parser; use crate::parser::util::get_consumed; use crate::parser::util::start_of_line; diff --git a/src/parser/footnote_definition.rs b/src/parser/footnote_definition.rs index 310620d..92bc23a 100644 --- a/src/parser/footnote_definition.rs +++ b/src/parser/footnote_definition.rs @@ -12,16 +12,11 @@ use nom::sequence::tuple; use super::org_source::OrgSource; use super::util::WORD_CONSTITUENT_CHARACTERS; -use super::Context; use crate::error::CustomError; use crate::error::MyError; use crate::error::Res; use crate::parser::element_parser::element; -use crate::parser::exiting::ExitClass; use crate::parser::greater_element::FootnoteDefinition; -use crate::parser::parser_context::ContextElement; -use crate::parser::parser_context::ExitMatcherNode; -use crate::parser::parser_with_context::parser_with_context; use crate::parser::util::blank_line; use crate::parser::util::exit_matcher_parser; use crate::parser::util::get_consumed; diff --git a/src/parser/footnote_reference.rs b/src/parser/footnote_reference.rs index d82f514..0af0825 100644 --- a/src/parser/footnote_reference.rs +++ b/src/parser/footnote_reference.rs @@ -6,17 +6,12 @@ use nom::multi::many_till; use super::org_source::BracketDepth; use super::org_source::OrgSource; -use super::parser_context::ContextElement; use super::util::maybe_consume_object_trailing_whitespace_if_not_exiting; -use super::Context; use crate::error::CustomError; use crate::error::MyError; use crate::error::Res; -use crate::parser::exiting::ExitClass; use crate::parser::footnote_definition::label; use crate::parser::object_parser::standard_set_object; -use crate::parser::parser_context::ExitMatcherNode; -use crate::parser::parser_with_context::parser_with_context; use crate::parser::util::exit_matcher_parser; use crate::parser::util::get_consumed; use crate::parser::FootnoteReference; diff --git a/src/parser/greater_block.rs b/src/parser/greater_block.rs index 99ff850..125d1b3 100644 --- a/src/parser/greater_block.rs +++ b/src/parser/greater_block.rs @@ -13,17 +13,11 @@ use nom::sequence::tuple; use super::org_source::OrgSource; use super::util::in_section; -use super::Context; use crate::error::CustomError; use crate::error::MyError; use crate::error::Res; use crate::parser::element_parser::element; -use crate::parser::exiting::ExitClass; use crate::parser::greater_element::GreaterBlock; -use crate::parser::parser_context::ContextElement; -use crate::parser::parser_context::ExitMatcherNode; -use crate::parser::parser_with_context::parser_with_context; -use crate::parser::source::SetSource; use crate::parser::util::blank_line; use crate::parser::util::exit_matcher_parser; use crate::parser::util::get_consumed; diff --git a/src/parser/horizontal_rule.rs b/src/parser/horizontal_rule.rs index acf4775..451fae0 100644 --- a/src/parser/horizontal_rule.rs +++ b/src/parser/horizontal_rule.rs @@ -9,7 +9,6 @@ use nom::multi::many1_count; use nom::sequence::tuple; use super::org_source::OrgSource; -use super::Context; use crate::error::Res; use crate::parser::util::start_of_line; use crate::parser::HorizontalRule; diff --git a/src/parser/inline_babel_call.rs b/src/parser/inline_babel_call.rs index 6f3479e..9409e60 100644 --- a/src/parser/inline_babel_call.rs +++ b/src/parser/inline_babel_call.rs @@ -12,14 +12,9 @@ use nom::multi::many_till; use super::org_source::BracketDepth; use super::org_source::OrgSource; use super::util::maybe_consume_object_trailing_whitespace_if_not_exiting; -use super::Context; use crate::error::CustomError; use crate::error::MyError; use crate::error::Res; -use crate::parser::exiting::ExitClass; -use crate::parser::parser_context::ContextElement; -use crate::parser::parser_context::ExitMatcherNode; -use crate::parser::parser_with_context::parser_with_context; use crate::parser::util::exit_matcher_parser; use crate::parser::util::get_consumed; use crate::parser::InlineBabelCall; diff --git a/src/parser/inline_source_block.rs b/src/parser/inline_source_block.rs index e61bea0..28a8cc3 100644 --- a/src/parser/inline_source_block.rs +++ b/src/parser/inline_source_block.rs @@ -14,14 +14,9 @@ use tracing::span; use super::org_source::BracketDepth; use super::org_source::OrgSource; use super::util::maybe_consume_object_trailing_whitespace_if_not_exiting; -use super::Context; use crate::error::CustomError; use crate::error::MyError; use crate::error::Res; -use crate::parser::exiting::ExitClass; -use crate::parser::parser_context::ContextElement; -use crate::parser::parser_context::ExitMatcherNode; -use crate::parser::parser_with_context::parser_with_context; use crate::parser::util::exit_matcher_parser; use crate::parser::util::get_consumed; use crate::parser::InlineSourceBlock; diff --git a/src/parser/keyword.rs b/src/parser/keyword.rs index 6e32be1..e2afc4a 100644 --- a/src/parser/keyword.rs +++ b/src/parser/keyword.rs @@ -16,7 +16,6 @@ use nom::sequence::tuple; use super::org_source::BracketDepth; use super::org_source::OrgSource; -use super::Context; use crate::error::CustomError; use crate::error::MyError; use crate::error::Res; diff --git a/src/parser/latex_environment.rs b/src/parser/latex_environment.rs index 4697e9d..750424f 100644 --- a/src/parser/latex_environment.rs +++ b/src/parser/latex_environment.rs @@ -13,12 +13,7 @@ use nom::sequence::tuple; use super::org_source::OrgSource; use super::util::get_consumed; -use super::Context; use crate::error::Res; -use crate::parser::exiting::ExitClass; -use crate::parser::parser_context::ContextElement; -use crate::parser::parser_context::ExitMatcherNode; -use crate::parser::parser_with_context::parser_with_context; use crate::parser::util::exit_matcher_parser; use crate::parser::util::start_of_line; use crate::parser::LatexEnvironment; diff --git a/src/parser/latex_fragment.rs b/src/parser/latex_fragment.rs index 4be6a0e..a964a7d 100644 --- a/src/parser/latex_fragment.rs +++ b/src/parser/latex_fragment.rs @@ -14,11 +14,9 @@ use nom::sequence::tuple; use super::org_source::OrgSource; use super::util::maybe_consume_object_trailing_whitespace_if_not_exiting; -use super::Context; use crate::error::CustomError; use crate::error::MyError; use crate::error::Res; -use crate::parser::parser_with_context::parser_with_context; use crate::parser::util::exit_matcher_parser; use crate::parser::util::get_consumed; use crate::parser::LatexFragment; diff --git a/src/parser/lesser_block.rs b/src/parser/lesser_block.rs index 9615727..4191830 100644 --- a/src/parser/lesser_block.rs +++ b/src/parser/lesser_block.rs @@ -12,9 +12,7 @@ use nom::multi::many_till; use nom::sequence::tuple; use super::org_source::OrgSource; -use super::Context; use crate::error::Res; -use crate::parser::exiting::ExitClass; use crate::parser::lesser_element::CommentBlock; use crate::parser::lesser_element::ExampleBlock; use crate::parser::lesser_element::ExportBlock; @@ -23,9 +21,6 @@ use crate::parser::lesser_element::VerseBlock; use crate::parser::object::Object; use crate::parser::object::PlainText; use crate::parser::object_parser::standard_set_object; -use crate::parser::parser_context::ContextElement; -use crate::parser::parser_context::ExitMatcherNode; -use crate::parser::parser_with_context::parser_with_context; use crate::parser::util::blank_line; use crate::parser::util::exit_matcher_parser; use crate::parser::util::get_consumed; diff --git a/src/parser/line_break.rs b/src/parser/line_break.rs index c38f3e0..caa3416 100644 --- a/src/parser/line_break.rs +++ b/src/parser/line_break.rs @@ -5,7 +5,6 @@ use nom::combinator::recognize; use nom::multi::many0; use super::org_source::OrgSource; -use super::Context; use crate::error::CustomError; use crate::error::MyError; use crate::error::Res; diff --git a/src/parser/mod.rs b/src/parser/mod.rs index 6844477..b4452bc 100644 --- a/src/parser/mod.rs +++ b/src/parser/mod.rs @@ -7,16 +7,13 @@ mod diary_sexp; mod document; mod drawer; mod dynamic_block; -mod element; mod element_parser; mod entity; -mod exiting; mod export_snippet; mod fixed_width_area; mod footnote_definition; mod footnote_reference; mod greater_block; -mod greater_element; mod horizontal_rule; mod inline_babel_call; mod inline_source_block; @@ -24,9 +21,7 @@ mod keyword; mod latex_environment; mod latex_fragment; mod lesser_block; -mod lesser_element; mod line_break; -mod object; mod object_parser; mod org_macro; mod org_source; @@ -39,7 +34,6 @@ mod property_drawer; mod radio_link; mod regular_link; pub mod sexp; -mod source; mod statistics_cookie; mod subscript_and_superscript; mod table; @@ -49,65 +43,3 @@ mod timestamp; mod token; mod util; pub use document::document; -pub use document::Document; -pub use document::DocumentElement; -pub use document::Heading; -pub use document::Section; -pub use element::Element; -pub use greater_element::Drawer; -pub use greater_element::DynamicBlock; -pub use greater_element::FootnoteDefinition; -pub use greater_element::GreaterBlock; -pub use greater_element::PlainList; -pub use greater_element::PlainListItem; -pub use greater_element::PropertyDrawer; -pub use greater_element::Table; -pub use greater_element::TableRow; -pub use lesser_element::Clock; -pub use lesser_element::Comment; -pub use lesser_element::CommentBlock; -pub use lesser_element::DiarySexp; -pub use lesser_element::ExampleBlock; -pub use lesser_element::ExportBlock; -pub use lesser_element::FixedWidthArea; -pub use lesser_element::HorizontalRule; -pub use lesser_element::Keyword; -pub use lesser_element::LatexEnvironment; -pub use lesser_element::Paragraph; -pub use lesser_element::Planning; -pub use lesser_element::SrcBlock; -pub use lesser_element::TableCell; -pub use lesser_element::VerseBlock; -pub use object::AngleLink; -pub use object::Bold; -pub use object::Citation; -pub use object::CitationReference; -pub use object::Code; -pub use object::Entity; -pub use object::ExportSnippet; -pub use object::FootnoteReference; -pub use object::InlineBabelCall; -pub use object::InlineSourceBlock; -pub use object::Italic; -pub use object::LatexFragment; -pub use object::LineBreak; -pub use object::Object; -pub use object::OrgMacro; -pub use object::PlainLink; -pub use object::PlainText; -pub use object::RadioLink; -pub use object::RadioTarget; -pub use object::RegularLink; -pub use object::StatisticsCookie; -pub use object::StrikeThrough; -pub use object::Subscript; -pub use object::Superscript; -pub use object::Target; -pub use object::Timestamp; -pub use object::Underline; -pub use object::Verbatim; -pub use source::Source; - -use self::org_source::OrgSource; -use self::parser_context::Context; -use crate::error::Res; diff --git a/src/parser/object_parser.rs b/src/parser/object_parser.rs index 18faf11..7926b25 100644 --- a/src/parser/object_parser.rs +++ b/src/parser/object_parser.rs @@ -2,7 +2,6 @@ use nom::branch::alt; use nom::combinator::map; use super::org_source::OrgSource; -use super::parser_with_context::parser_with_context; use super::plain_text::plain_text; use super::regular_link::regular_link; use super::Context; diff --git a/src/parser/org_macro.rs b/src/parser/org_macro.rs index 65a86c4..ba67f4c 100644 --- a/src/parser/org_macro.rs +++ b/src/parser/org_macro.rs @@ -13,7 +13,6 @@ use super::Context; use crate::error::CustomError; use crate::error::Res; use crate::parser::object::OrgMacro; -use crate::parser::parser_with_context::parser_with_context; use crate::parser::util::exit_matcher_parser; use crate::parser::util::get_consumed; diff --git a/src/parser/org_source.rs b/src/parser/org_source.rs index 231cb10..dc2bf0c 100644 --- a/src/parser/org_source.rs +++ b/src/parser/org_source.rs @@ -27,7 +27,7 @@ pub struct OrgSource<'s> { impl<'s> std::fmt::Debug for OrgSource<'s> { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_tuple("OrgSource") + f.debug_tuple("Org") .field(&Into::<&str>::into(self)) .finish() } diff --git a/src/parser/paragraph.rs b/src/parser/paragraph.rs index 9cfda4d..82be7b4 100644 --- a/src/parser/paragraph.rs +++ b/src/parser/paragraph.rs @@ -13,11 +13,7 @@ use super::util::blank_line; use super::util::get_consumed; use super::Context; use crate::error::Res; -use crate::parser::exiting::ExitClass; use crate::parser::object_parser::standard_set_object; -use crate::parser::parser_context::ContextElement; -use crate::parser::parser_context::ExitMatcherNode; -use crate::parser::parser_with_context::parser_with_context; use crate::parser::util::exit_matcher_parser; use crate::parser::util::start_of_line; diff --git a/src/parser/plain_link.rs b/src/parser/plain_link.rs index 387f788..11e054b 100644 --- a/src/parser/plain_link.rs +++ b/src/parser/plain_link.rs @@ -15,11 +15,7 @@ use super::Context; use crate::error::CustomError; use crate::error::MyError; use crate::error::Res; -use crate::parser::exiting::ExitClass; use crate::parser::object::PlainLink; -use crate::parser::parser_context::ContextElement; -use crate::parser::parser_context::ExitMatcherNode; -use crate::parser::parser_with_context::parser_with_context; use crate::parser::util::exit_matcher_parser; use crate::parser::util::get_consumed; use crate::parser::util::WORD_CONSTITUENT_CHARACTERS; diff --git a/src/parser/plain_list.rs b/src/parser/plain_list.rs index 8773008..d4827b5 100644 --- a/src/parser/plain_list.rs +++ b/src/parser/plain_list.rs @@ -18,9 +18,7 @@ use nom::sequence::tuple; use super::greater_element::PlainList; use super::greater_element::PlainListItem; -use super::object_parser::standard_set_object; use super::org_source::OrgSource; -use super::parser_with_context::parser_with_context; use super::util::non_whitespace_character; use super::Context; use super::Object; @@ -28,9 +26,6 @@ use crate::error::CustomError; use crate::error::MyError; use crate::error::Res; use crate::parser::element_parser::element; -use crate::parser::exiting::ExitClass; -use crate::parser::parser_context::ContextElement; -use crate::parser::parser_context::ExitMatcherNode; use crate::parser::util::blank_line; use crate::parser::util::exit_matcher_parser; use crate::parser::util::get_consumed; diff --git a/src/parser/plain_text.rs b/src/parser/plain_text.rs index 7d0423d..5a49faa 100644 --- a/src/parser/plain_text.rs +++ b/src/parser/plain_text.rs @@ -13,9 +13,6 @@ use super::radio_link::RematchObject; use super::Context; use super::Object; use crate::error::Res; -use crate::parser::object_parser::any_object_except_plain_text; -use crate::parser::parser_with_context::parser_with_context; -use crate::parser::util::exit_matcher_parser; #[cfg_attr(feature = "tracing", tracing::instrument(ret, level = "debug"))] pub fn plain_text<'r, 's>( diff --git a/src/parser/property_drawer.rs b/src/parser/property_drawer.rs index 8e73ba3..928c00b 100644 --- a/src/parser/property_drawer.rs +++ b/src/parser/property_drawer.rs @@ -18,13 +18,8 @@ use super::Context; use crate::error::CustomError; use crate::error::MyError; use crate::error::Res; -use crate::parser::exiting::ExitClass; use crate::parser::greater_element::NodeProperty; use crate::parser::greater_element::PropertyDrawer; -use crate::parser::parser_context::ContextElement; -use crate::parser::parser_context::ExitMatcherNode; -use crate::parser::parser_with_context::parser_with_context; -use crate::parser::util::exit_matcher_parser; use crate::parser::util::get_consumed; use crate::parser::util::immediate_in_section; use crate::parser::util::maybe_consume_trailing_whitespace_if_not_exiting; diff --git a/src/parser/radio_link.rs b/src/parser/radio_link.rs index bbe8f07..cb0a4e1 100644 --- a/src/parser/radio_link.rs +++ b/src/parser/radio_link.rs @@ -12,12 +12,6 @@ use super::Object; use crate::error::CustomError; use crate::error::MyError; use crate::error::Res; -use crate::parser::exiting::ExitClass; -use crate::parser::object_parser::minimal_set_object; -use crate::parser::parser_context::ContextElement; -use crate::parser::parser_context::ExitMatcherNode; -use crate::parser::parser_with_context::parser_with_context; -use crate::parser::util::exit_matcher_parser; use crate::parser::util::get_consumed; use crate::parser::RadioLink; use crate::parser::RadioTarget; diff --git a/src/parser/regular_link.rs b/src/parser/regular_link.rs index 9a36d09..7776209 100644 --- a/src/parser/regular_link.rs +++ b/src/parser/regular_link.rs @@ -7,18 +7,12 @@ use nom::combinator::verify; use nom::multi::many_till; use super::org_source::OrgSource; -use super::parser_with_context::parser_with_context; use super::util::get_consumed; use super::util::maybe_consume_object_trailing_whitespace_if_not_exiting; use super::Context; use super::Object; use super::RegularLink; use crate::error::Res; -use crate::parser::exiting::ExitClass; -use crate::parser::object_parser::regular_link_description_object_set; -use crate::parser::parser_context::ContextElement; -use crate::parser::parser_context::ExitMatcherNode; -use crate::parser::util::exit_matcher_parser; #[cfg_attr(feature = "tracing", tracing::instrument(ret, level = "debug"))] pub fn regular_link<'r, 's>( diff --git a/src/parser/statistics_cookie.rs b/src/parser/statistics_cookie.rs index cae0de3..dc98a0b 100644 --- a/src/parser/statistics_cookie.rs +++ b/src/parser/statistics_cookie.rs @@ -7,7 +7,6 @@ use super::org_source::OrgSource; use super::util::maybe_consume_object_trailing_whitespace_if_not_exiting; use super::Context; use crate::error::Res; -use crate::parser::parser_with_context::parser_with_context; use crate::parser::StatisticsCookie; #[cfg_attr(feature = "tracing", tracing::instrument(ret, level = "debug"))] diff --git a/src/parser/subscript_and_superscript.rs b/src/parser/subscript_and_superscript.rs index 91d4274..6f10ad2 100644 --- a/src/parser/subscript_and_superscript.rs +++ b/src/parser/subscript_and_superscript.rs @@ -18,12 +18,6 @@ use super::Object; use crate::error::CustomError; use crate::error::MyError; use crate::error::Res; -use crate::parser::exiting::ExitClass; -use crate::parser::object_parser::standard_set_object; -use crate::parser::parser_context::ContextElement; -use crate::parser::parser_context::ExitMatcherNode; -use crate::parser::parser_with_context::parser_with_context; -use crate::parser::util::exit_matcher_parser; use crate::parser::util::get_consumed; use crate::parser::Subscript; use crate::parser::Superscript; diff --git a/src/parser/table.rs b/src/parser/table.rs index eb45ea8..188f7ff 100644 --- a/src/parser/table.rs +++ b/src/parser/table.rs @@ -12,17 +12,11 @@ use nom::multi::many1; use nom::multi::many_till; use nom::sequence::tuple; -use super::object_parser::table_cell_set_object; use super::org_source::OrgSource; use super::Context; use crate::error::Res; -use crate::parser::exiting::ExitClass; use crate::parser::greater_element::TableRow; use crate::parser::lesser_element::TableCell; -use crate::parser::parser_context::ContextElement; -use crate::parser::parser_context::ExitMatcherNode; -use crate::parser::parser_with_context::parser_with_context; -use crate::parser::util::exit_matcher_parser; use crate::parser::util::get_consumed; use crate::parser::util::start_of_line; use crate::parser::Table; diff --git a/src/parser/target.rs b/src/parser/target.rs index fd6b040..597db08 100644 --- a/src/parser/target.rs +++ b/src/parser/target.rs @@ -12,11 +12,6 @@ use super::Context; use crate::error::CustomError; use crate::error::MyError; use crate::error::Res; -use crate::parser::exiting::ExitClass; -use crate::parser::parser_context::ContextElement; -use crate::parser::parser_context::ExitMatcherNode; -use crate::parser::parser_with_context::parser_with_context; -use crate::parser::util::exit_matcher_parser; use crate::parser::util::get_consumed; use crate::parser::Target; diff --git a/src/parser/text_markup.rs b/src/parser/text_markup.rs index 8ad438c..b6f5285 100644 --- a/src/parser/text_markup.rs +++ b/src/parser/text_markup.rs @@ -22,11 +22,6 @@ use super::Context; use crate::error::CustomError; use crate::error::MyError; use crate::error::Res; -use crate::parser::exiting::ExitClass; -use crate::parser::object_parser::standard_set_object; -use crate::parser::parser_context::ContextElement; -use crate::parser::parser_context::ExitMatcherNode; -use crate::parser::parser_with_context::parser_with_context; use crate::parser::radio_link::rematch_target; use crate::parser::util::exit_matcher_parser; use crate::parser::util::get_consumed; diff --git a/src/parser/timestamp.rs b/src/parser/timestamp.rs index 55a6be1..3eff2e3 100644 --- a/src/parser/timestamp.rs +++ b/src/parser/timestamp.rs @@ -14,12 +14,6 @@ use super::org_source::OrgSource; use super::util::maybe_consume_object_trailing_whitespace_if_not_exiting; use super::Context; use crate::error::Res; -use crate::parser::exiting::ExitClass; -use crate::parser::parser_context::ContextElement; -use crate::parser::parser_context::ContextTree; -use crate::parser::parser_context::ExitMatcherNode; -use crate::parser::parser_with_context::parser_with_context; -use crate::parser::util::exit_matcher_parser; use crate::parser::util::get_consumed; use crate::parser::Timestamp; diff --git a/src/parser/token.rs b/src/parser/token.rs index cc62562..bbf6d8e 100644 --- a/src/parser/token.rs +++ b/src/parser/token.rs @@ -1,14 +1,10 @@ use std::collections::VecDeque; -use super::Document; use super::Element; -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> { Document(&'r Document<'s>), diff --git a/src/parser/util.rs b/src/parser/util.rs index e59eadd..7f8529c 100644 --- a/src/parser/util.rs +++ b/src/parser/util.rs @@ -14,12 +14,10 @@ use nom::multi::many_till; use nom::sequence::tuple; use super::org_source::OrgSource; -use super::parser_context::ContextElement; use super::Context; use crate::error::CustomError; use crate::error::MyError; use crate::error::Res; -use crate::parser::parser_with_context::parser_with_context; pub const WORD_CONSTITUENT_CHARACTERS: &str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; diff --git a/src/types/document.rs b/src/types/document.rs new file mode 100644 index 0000000..fd08dc3 --- /dev/null +++ b/src/types/document.rs @@ -0,0 +1,56 @@ +#[derive(Debug)] +pub struct Document<'s> { + pub source: &'s str, + pub zeroth_section: Option>, + pub children: Vec>, +} + +#[derive(Debug)] +pub struct Heading<'s> { + pub source: &'s str, + pub stars: usize, + pub todo_keyword: Option<&'s str>, + // TODO: add todo-type enum + pub title: Vec>, + pub tags: Vec<&'s str>, + pub children: Vec>, +} + +#[derive(Debug)] +pub struct Section<'s> { + pub source: &'s str, + pub children: Vec>, +} + +#[derive(Debug)] +pub enum DocumentElement<'s> { + Heading(Heading<'s>), + Section(Section<'s>), +} + +impl<'s> Source<'s> for Document<'s> { + fn get_source(&'s self) -> &'s str { + self.source + } +} + +impl<'s> Source<'s> for DocumentElement<'s> { + fn get_source(&'s self) -> &'s str { + match self { + DocumentElement::Heading(obj) => obj.source, + DocumentElement::Section(obj) => obj.source, + } + } +} + +impl<'s> Source<'s> for Section<'s> { + fn get_source(&'s self) -> &'s str { + self.source + } +} + +impl<'s> Source<'s> for Heading<'s> { + fn get_source(&'s self) -> &'s str { + self.source + } +} diff --git a/src/parser/element.rs b/src/types/element.rs similarity index 98% rename from src/parser/element.rs rename to src/types/element.rs index 9795ec6..5155189 100644 --- a/src/parser/element.rs +++ b/src/types/element.rs @@ -18,8 +18,6 @@ use super::lesser_element::Paragraph; use super::lesser_element::Planning; use super::lesser_element::SrcBlock; use super::lesser_element::VerseBlock; -use super::source::SetSource; -use super::source::Source; use super::Drawer; #[derive(Debug)] diff --git a/src/parser/greater_element.rs b/src/types/greater_element.rs similarity index 98% rename from src/parser/greater_element.rs rename to src/types/greater_element.rs index 5a46284..2a6b1f6 100644 --- a/src/parser/greater_element.rs +++ b/src/types/greater_element.rs @@ -1,6 +1,5 @@ use super::element::Element; use super::lesser_element::TableCell; -use super::source::Source; use super::Object; #[derive(Debug)] diff --git a/src/parser/lesser_element.rs b/src/types/lesser_element.rs similarity index 99% rename from src/parser/lesser_element.rs rename to src/types/lesser_element.rs index cac3adf..f87278d 100644 --- a/src/parser/lesser_element.rs +++ b/src/types/lesser_element.rs @@ -1,5 +1,4 @@ use super::object::Object; -use super::source::Source; use super::PlainText; #[derive(Debug)] diff --git a/src/types/mod.rs b/src/types/mod.rs index e69de29..9d2f200 100644 --- a/src/types/mod.rs +++ b/src/types/mod.rs @@ -0,0 +1,65 @@ +mod document; +mod element; +mod greater_element; +mod lesser_element; +mod object; +mod source; +pub use document::Document; +pub use document::DocumentElement; +pub use document::Heading; +pub use document::Section; +pub use element::Element; +pub use greater_element::Drawer; +pub use greater_element::DynamicBlock; +pub use greater_element::FootnoteDefinition; +pub use greater_element::GreaterBlock; +pub use greater_element::PlainList; +pub use greater_element::PlainListItem; +pub use greater_element::PropertyDrawer; +pub use greater_element::Table; +pub use greater_element::TableRow; +pub use lesser_element::Clock; +pub use lesser_element::Comment; +pub use lesser_element::CommentBlock; +pub use lesser_element::DiarySexp; +pub use lesser_element::ExampleBlock; +pub use lesser_element::ExportBlock; +pub use lesser_element::FixedWidthArea; +pub use lesser_element::HorizontalRule; +pub use lesser_element::Keyword; +pub use lesser_element::LatexEnvironment; +pub use lesser_element::Paragraph; +pub use lesser_element::Planning; +pub use lesser_element::SrcBlock; +pub use lesser_element::TableCell; +pub use lesser_element::VerseBlock; +pub use object::AngleLink; +pub use object::Bold; +pub use object::Citation; +pub use object::CitationReference; +pub use object::Code; +pub use object::Entity; +pub use object::ExportSnippet; +pub use object::FootnoteReference; +pub use object::InlineBabelCall; +pub use object::InlineSourceBlock; +pub use object::Italic; +pub use object::LatexFragment; +pub use object::LineBreak; +pub use object::Object; +pub use object::OrgMacro; +pub use object::PlainLink; +pub use object::PlainText; +pub use object::RadioLink; +pub use object::RadioTarget; +pub use object::RegularLink; +pub use object::StatisticsCookie; +pub use object::StrikeThrough; +pub use object::Subscript; +pub use object::Superscript; +pub use object::Target; +pub use object::Timestamp; +pub use object::Underline; +pub use object::Verbatim; +pub use source::SetSource; +pub use source::Source; diff --git a/src/parser/object.rs b/src/types/object.rs similarity index 99% rename from src/parser/object.rs rename to src/types/object.rs index 9064a6f..1234c67 100644 --- a/src/parser/object.rs +++ b/src/types/object.rs @@ -1,5 +1,3 @@ -use super::source::Source; - #[derive(Debug, PartialEq)] pub enum Object<'s> { Bold(Bold<'s>), diff --git a/src/parser/source.rs b/src/types/source.rs similarity index 100% rename from src/parser/source.rs rename to src/types/source.rs