diff options
| author | Martin Haug <mhaug@live.de> | 2021-10-31 18:52:48 +0100 |
|---|---|---|
| committer | Martin Haug <mhaug@live.de> | 2021-11-05 13:44:49 +0100 |
| commit | 2e7d359e59a45849f53eea6e022ca83295f5a6e7 (patch) | |
| tree | 6fc2b3e3f1c12f1326061cd09a374fc6dca3026a /src/syntax | |
| parent | c569e14c07902b23b7b3e29df4076cea1f4496cf (diff) | |
Unicode escape error moved to tokenizer
Diffstat (limited to 'src/syntax')
| -rw-r--r-- | src/syntax/markup.rs | 10 | ||||
| -rw-r--r-- | src/syntax/mod.rs | 2 | ||||
| -rw-r--r-- | src/syntax/token.rs | 5 |
3 files changed, 4 insertions, 13 deletions
diff --git a/src/syntax/markup.rs b/src/syntax/markup.rs index 49b2a519..f43a618a 100644 --- a/src/syntax/markup.rs +++ b/src/syntax/markup.rs @@ -1,7 +1,6 @@ use super::{Expr, Ident, NodeKind, RedNode, RedRef, Span, TypedNode}; use crate::node; use crate::util::EcoString; -use std::fmt::Write; node! { /// The syntactical root capable of representing a full parsed document. @@ -50,14 +49,7 @@ impl TypedNode for MarkupNode { NodeKind::Strong => Some(MarkupNode::Strong), NodeKind::Emph => Some(MarkupNode::Emph), NodeKind::Text(s) => Some(MarkupNode::Text(s.clone())), - NodeKind::UnicodeEscape(u) => Some(MarkupNode::Text(match u.character { - Some(c) => c.into(), - None => { - let mut eco = EcoString::with_capacity(u.sequence.len() + 4); - write!(&mut eco, "\\u{{{}}}", u.sequence).unwrap(); - eco - } - })), + NodeKind::UnicodeEscape(u) => Some(MarkupNode::Text(u.character.into())), NodeKind::EnDash => Some(MarkupNode::Text(EcoString::from("\u{2013}"))), NodeKind::EmDash => Some(MarkupNode::Text(EcoString::from("\u{2014}"))), NodeKind::NonBreakingSpace => { diff --git a/src/syntax/mod.rs b/src/syntax/mod.rs index afa0ab86..9d4beb6c 100644 --- a/src/syntax/mod.rs +++ b/src/syntax/mod.rs @@ -121,7 +121,7 @@ pub enum NodeKind { Text(EcoString), /// A slash and the letter "u" followed by a hexadecimal unicode entity /// enclosed in curly braces: `\u{1F5FA}`. - UnicodeEscape(Rc<UnicodeEscapeToken>), + UnicodeEscape(UnicodeEscapeToken), /// An arbitrary number of backticks followed by inner contents, terminated /// with the same number of backticks: `` `...` ``. Raw(Rc<RawToken>), diff --git a/src/syntax/token.rs b/src/syntax/token.rs index 5a621495..4f43bb4f 100644 --- a/src/syntax/token.rs +++ b/src/syntax/token.rs @@ -33,9 +33,8 @@ pub struct MathToken { /// A unicode escape sequence token: `\u{1F5FA}`. #[derive(Debug, Clone, PartialEq)] +#[repr(transparent)] pub struct UnicodeEscapeToken { - /// The escape sequence between the braces. - pub sequence: EcoString, /// The resulting unicode character. - pub character: Option<char>, + pub character: char, } |
