From 54b02f4e74f4959e99eb6818865137f38d352103 Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Fri, 21 Apr 2023 16:07:38 -0400 Subject: [PATCH] Give object structs their own file separate from the parsers. --- src/parser/document.rs | 2 +- src/parser/mod.rs | 1 + src/parser/object.rs | 33 --------------------------------- src/parser/object_parser.rs | 35 +++++++++++++++++++++++++++++++++++ src/parser/paragraph.rs | 5 +---- src/parser/table.rs | 2 +- 6 files changed, 39 insertions(+), 39 deletions(-) create mode 100644 src/parser/object_parser.rs diff --git a/src/parser/document.rs b/src/parser/document.rs index f0972ec..dc3591e 100644 --- a/src/parser/document.rs +++ b/src/parser/document.rs @@ -1,7 +1,7 @@ use crate::parser::comment::comment; use crate::parser::element::element; use crate::parser::exiting::ExitClass; -use crate::parser::object::standard_set_object; +use crate::parser::object_parser::standard_set_object; use crate::parser::parser_context::ContextElement; use crate::parser::parser_context::ContextTree; use crate::parser::parser_context::ExitMatcherNode; diff --git a/src/parser/mod.rs b/src/parser/mod.rs index 33eb7de..b57dbe8 100644 --- a/src/parser/mod.rs +++ b/src/parser/mod.rs @@ -11,6 +11,7 @@ mod greater_element; mod lesser_element; mod list; mod object; +mod object_parser; mod paragraph; mod parser_context; mod parser_with_context; diff --git a/src/parser/object.rs b/src/parser/object.rs index 7a493a1..db0534e 100644 --- a/src/parser/object.rs +++ b/src/parser/object.rs @@ -1,11 +1,4 @@ -use nom::combinator::map; -use nom::combinator::not; - -use super::error::Res; -use super::parser_with_context::parser_with_context; -use super::plain_text::plain_text; use super::source::Source; -use super::Context; #[derive(Debug)] pub enum Object<'s> { @@ -42,29 +35,3 @@ impl<'s> Source<'s> for Object<'s> { } } } - -#[tracing::instrument(ret, level = "debug")] -pub fn standard_set_object<'r, 's>( - context: Context<'r, 's>, - input: &'s str, -) -> Res<&'s str, Object<'s>> { - // TODO: add entities, LaTeX fragments, export snippets, footnote references, citations (NOT citation references), inline babel calls, inline source blocks, line breaks, links, macros, targets and radio targets, statistics cookies, subscript and superscript, timestamps, and text markup. - not(|i| context.check_exit_matcher(i))(input)?; - - let plain_text_matcher = parser_with_context!(plain_text)(context); - - map(plain_text_matcher, Object::PlainText)(input) -} - -#[tracing::instrument(ret, level = "debug")] -pub fn minimal_set_object<'r, 's>( - context: Context<'r, 's>, - input: &'s str, -) -> Res<&'s str, Object<'s>> { - // TODO: add text markup, entities, LaTeX fragments, superscripts and subscripts - not(|i| context.check_exit_matcher(i))(input)?; - - let plain_text_matcher = parser_with_context!(plain_text)(context); - - map(plain_text_matcher, Object::PlainText)(input) -} diff --git a/src/parser/object_parser.rs b/src/parser/object_parser.rs new file mode 100644 index 0000000..aacff7f --- /dev/null +++ b/src/parser/object_parser.rs @@ -0,0 +1,35 @@ +use nom::combinator::map; +use nom::combinator::not; + +use crate::parser::object::Object; + +use super::error::Res; +use super::parser_with_context::parser_with_context; +use super::plain_text::plain_text; +use super::Context; + +#[tracing::instrument(ret, level = "debug")] +pub fn standard_set_object<'r, 's>( + context: Context<'r, 's>, + input: &'s str, +) -> Res<&'s str, Object<'s>> { + // TODO: add entities, LaTeX fragments, export snippets, footnote references, citations (NOT citation references), inline babel calls, inline source blocks, line breaks, links, macros, targets and radio targets, statistics cookies, subscript and superscript, timestamps, and text markup. + not(|i| context.check_exit_matcher(i))(input)?; + + let plain_text_matcher = parser_with_context!(plain_text)(context); + + map(plain_text_matcher, Object::PlainText)(input) +} + +#[tracing::instrument(ret, level = "debug")] +pub fn minimal_set_object<'r, 's>( + context: Context<'r, 's>, + input: &'s str, +) -> Res<&'s str, Object<'s>> { + // TODO: add text markup, entities, LaTeX fragments, superscripts and subscripts + not(|i| context.check_exit_matcher(i))(input)?; + + let plain_text_matcher = parser_with_context!(plain_text)(context); + + map(plain_text_matcher, Object::PlainText)(input) +} diff --git a/src/parser/paragraph.rs b/src/parser/paragraph.rs index afb641b..9902cd5 100644 --- a/src/parser/paragraph.rs +++ b/src/parser/paragraph.rs @@ -6,15 +6,12 @@ use nom::multi::many1; use nom::multi::many_till; use nom::sequence::tuple; -use crate::parser::error::CustomError; -use crate::parser::error::MyError; use crate::parser::exiting::ExitClass; -use crate::parser::object::standard_set_object; +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::immediate_in_section; use crate::parser::util::maybe_consume_trailing_whitespace_if_not_exiting; use crate::parser::util::start_of_line; diff --git a/src/parser/table.rs b/src/parser/table.rs index 44f9616..734d8d9 100644 --- a/src/parser/table.rs +++ b/src/parser/table.rs @@ -17,8 +17,8 @@ use crate::parser::error::Res; use crate::parser::exiting::ExitClass; use crate::parser::greater_element::TableRow; use crate::parser::lesser_element::TableCell; -use crate::parser::object::minimal_set_object; use crate::parser::object::Object; +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;