diff --git a/src/parser/bold.rs b/src/parser/bold.rs index 7f0052c9..cc833f84 100644 --- a/src/parser/bold.rs +++ b/src/parser/bold.rs @@ -1,5 +1,3 @@ -use crate::parser::parser_with_context::parser_with_context; - use super::combinator::context_many_till; use super::error::CustomError; use super::error::MyError; @@ -9,11 +7,12 @@ use super::parser_context::ContextElement; use super::parser_context::ExitMatcherNode; use super::text::symbol; use super::text::text_element; -use super::text::Bold; -use super::text::TextElement; +use super::token::Bold; +use super::token::TextElement; use super::token::Token; use super::util::in_section; use super::Context; +use crate::parser::parser_with_context::parser_with_context; use nom::branch::alt; use nom::bytes::complete::tag; use nom::combinator::map; diff --git a/src/parser/document.rs b/src/parser/document.rs index 27af25f6..0c7f7910 100644 --- a/src/parser/document.rs +++ b/src/parser/document.rs @@ -2,9 +2,8 @@ use super::combinator::context_many1; use super::error::Res; use super::paragraph::paragraph; -use super::parser_context::ContextElement; use super::parser_context::ContextTree; -use super::text::Paragraph; +use super::token::Paragraph; use super::token::Token; use super::Context; use nom::IResult; diff --git a/src/parser/link.rs b/src/parser/link.rs index e7b39ad0..ce2a7d48 100644 --- a/src/parser/link.rs +++ b/src/parser/link.rs @@ -9,8 +9,8 @@ use super::parser_context::ContextElement; use super::parser_context::ExitMatcherNode; use super::text::symbol; use super::text::text_element; -use super::text::Link; -use super::text::TextElement; +use super::token::Link; +use super::token::TextElement; use super::util::in_section; use super::Context; use nom::combinator::map; diff --git a/src/parser/paragraph.rs b/src/parser/paragraph.rs index ff4845a6..dc9982df 100644 --- a/src/parser/paragraph.rs +++ b/src/parser/paragraph.rs @@ -6,8 +6,8 @@ use super::parser_context::ExitMatcherNode; use super::text::blank_line; use super::text::line_break; use super::text::text_element; -use super::text::Paragraph; -use super::text::TextElement; +use super::token::Paragraph; +use super::token::TextElement; use super::token::Token; use super::Context; use nom::branch::alt; diff --git a/src/parser/text.rs b/src/parser/text.rs index 8ea5f331..e61c4e9f 100644 --- a/src/parser/text.rs +++ b/src/parser/text.rs @@ -12,64 +12,14 @@ use super::bold::bold; use super::error::Res; use super::link::link; use super::parser_with_context::parser_with_context; +use super::token::BlankLine; +use super::token::LineBreak; +use super::token::Space; +use super::token::Span; +use super::token::Symbol; +use super::token::TextElement; use super::Context; -#[derive(Debug)] -pub enum TextElement<'a> { - Span(Span<'a>), - Space(Space<'a>), - LineBreak(LineBreak<'a>), - Symbol(Symbol<'a>), - Bold(Bold<'a>), - Link(Link<'a>), -} - -#[derive(Debug)] -pub struct Span<'a> { - contents: &'a str, -} - -#[derive(Debug)] -pub struct Space<'a> { - contents: &'a str, -} - -#[derive(Debug)] -pub struct LineBreak<'a> { - contents: &'a str, -} - -#[derive(Debug)] -pub struct Symbol<'a> { - contents: &'a str, -} - -#[derive(Debug)] -pub struct BlankLine<'a> { - contents: &'a str, -} - -#[derive(Debug)] -pub struct Sequence<'a> { - pub contents: &'a str, -} - -#[derive(Debug)] -pub struct Bold<'a> { - pub contents: &'a str, -} - -#[derive(Debug)] -pub struct Link<'a> { - pub contents: &'a str, -} - -#[derive(Debug)] -pub struct Paragraph<'a> { - pub contents: Vec>, - pub paragraph_end: &'a str, -} - pub fn line_break(input: &str) -> Res<&str, LineBreak> { map(line_ending, |s: &str| LineBreak { contents: s })(input) } diff --git a/src/parser/token.rs b/src/parser/token.rs index 959e6333..90e8d903 100644 --- a/src/parser/token.rs +++ b/src/parser/token.rs @@ -1,6 +1,3 @@ -use super::text::Paragraph; -use super::text::TextElement; - #[derive(Debug)] pub enum Token<'a> { TextElement(TextElement<'a>), @@ -18,3 +15,59 @@ impl<'a> Into> for Paragraph<'a> { Token::Paragraph(self) } } + +#[derive(Debug)] +pub enum TextElement<'a> { + Span(Span<'a>), + Space(Space<'a>), + LineBreak(LineBreak<'a>), + Symbol(Symbol<'a>), + Bold(Bold<'a>), + Link(Link<'a>), +} + +#[derive(Debug)] +pub struct Span<'a> { + pub contents: &'a str, +} + +#[derive(Debug)] +pub struct Space<'a> { + pub contents: &'a str, +} + +#[derive(Debug)] +pub struct LineBreak<'a> { + pub contents: &'a str, +} + +#[derive(Debug)] +pub struct Symbol<'a> { + pub contents: &'a str, +} + +#[derive(Debug)] +pub struct BlankLine<'a> { + pub contents: &'a str, +} + +#[derive(Debug)] +pub struct Sequence<'a> { + pub contents: &'a str, +} + +#[derive(Debug)] +pub struct Bold<'a> { + pub contents: &'a str, +} + +#[derive(Debug)] +pub struct Link<'a> { + pub contents: &'a str, +} + +#[derive(Debug)] +pub struct Paragraph<'a> { + pub contents: Vec>, + pub paragraph_end: &'a str, +}