Clone issue.
This commit is contained in:
parent
96aca6b537
commit
b20568c09e
@ -3,5 +3,6 @@ mod nom_context;
|
||||
mod parser_with_context;
|
||||
mod text;
|
||||
mod text_element_parser;
|
||||
mod token;
|
||||
pub use text_element_parser::document;
|
||||
type Context<'r> = &'r nom_context::ContextTree<'r>;
|
||||
|
@ -4,6 +4,7 @@ use nom::error::VerboseError;
|
||||
use nom::IResult;
|
||||
|
||||
use super::list::List;
|
||||
use super::token::Token;
|
||||
|
||||
type Matcher = dyn for<'s> Fn(&'s str) -> IResult<&'s str, &'s str, VerboseError<&'s str>>;
|
||||
|
||||
@ -81,7 +82,7 @@ pub struct FailMatcherNode<'r> {
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct PreviousElementNode<'r> {
|
||||
pub dummy: &'r str,
|
||||
pub element: Token<'r>,
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
|
@ -33,7 +33,7 @@ use super::text_element_parser::paragraph;
|
||||
|
||||
pub type Res<T, U> = IResult<T, U, VerboseError<T>>;
|
||||
|
||||
#[derive(Debug)]
|
||||
#[derive(Debug, Clone)]
|
||||
pub enum TextElement<'a> {
|
||||
Span(Span<'a>),
|
||||
Space(Space<'a>),
|
||||
|
@ -21,6 +21,7 @@ use super::text::Bold;
|
||||
use super::text::Link;
|
||||
use super::text::Res;
|
||||
use super::text::TextElement;
|
||||
use super::token::Token;
|
||||
use super::Context;
|
||||
use nom::branch::alt;
|
||||
use nom::combinator::eof;
|
||||
@ -41,12 +42,13 @@ use tracing::trace;
|
||||
|
||||
type UnboundMatcher<'r, I, O, E> = dyn Fn(Context<'r>, I) -> IResult<I, O, E>;
|
||||
|
||||
fn context_many_till<'r, I, O, E, F, M, T>(
|
||||
fn context_many_till<'r, 'x, I, O, E, F, M, T>(
|
||||
context: Context<'r>,
|
||||
mut many_matcher: M,
|
||||
mut till_matcher: T,
|
||||
) -> impl FnMut(I) -> IResult<I, (Vec<O>, F), E> + 'r
|
||||
where
|
||||
O: Into<Token<'x>>,
|
||||
I: Clone + InputLength,
|
||||
E: ParseError<I>,
|
||||
M: Fn(Context<'r>, I) -> IResult<I, O, E> + 'r,
|
||||
|
12
src/parser/token.rs
Normal file
12
src/parser/token.rs
Normal file
@ -0,0 +1,12 @@
|
||||
use super::text::TextElement;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum Token<'a> {
|
||||
TextElement(TextElement<'a>),
|
||||
}
|
||||
|
||||
impl<'a> Into<Token<'a>> for TextElement<'a> {
|
||||
fn into(self) -> Token<'a> {
|
||||
Token::TextElement(self)
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user