diff --git a/src/ast/mod.rs b/src/ast/mod.rs index 5f110ca..82b647c 100644 --- a/src/ast/mod.rs +++ b/src/ast/mod.rs @@ -73,7 +73,7 @@ pub fn filter_token( /// A simple wrapper of `Option` /// /// It acts like a `token.text()` when inner is `Some(token)`, and an empty string when `None`. -#[derive(Default, Eq)] +#[derive(Default, Eq, Clone)] pub struct Token(pub(crate) Option); impl Token { diff --git a/src/export/event.rs b/src/export/event.rs index b525d61..8b0d92a 100644 --- a/src/export/event.rs +++ b/src/export/event.rs @@ -1,4 +1,4 @@ -use crate::{ast::*, SyntaxToken}; +use crate::ast::*; #[non_exhaustive] #[derive(Clone, PartialEq, Eq, Debug)] @@ -54,7 +54,7 @@ pub enum Event { Enter(Container), Leave(Container), - Text(SyntaxToken), + Text(Token), Macros(Macros), Cookie(Cookie), InlineCall(InlineCall), diff --git a/src/export/html.rs b/src/export/html.rs index 7605c21..bcd89cb 100644 --- a/src/export/html.rs +++ b/src/export/html.rs @@ -274,7 +274,7 @@ impl Traverser for HtmlExport { Event::Leave(Container::Link(_)) => self.output += "", Event::Text(text) => { - let _ = write!(&mut self.output, "{}", HtmlEscape(text.text())); + let _ = write!(&mut self.output, "{}", HtmlEscape(text)); } Event::LineBreak(_) => self.output += "
", diff --git a/src/export/traverse.rs b/src/export/traverse.rs index 9afe01c..3a97a8e 100644 --- a/src/export/traverse.rs +++ b/src/export/traverse.rs @@ -216,7 +216,7 @@ pub trait Traverser { } SyntaxElement::Token(token) => { if token.kind() == TEXT { - self.event(Event::Text(token), ctx); + self.event(Event::Text(Token(Some(token))), ctx); take_control!(); } }