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;