From 2e7d359e59a45849f53eea6e022ca83295f5a6e7 Mon Sep 17 00:00:00 2001 From: Martin Haug Date: Sun, 31 Oct 2021 18:52:48 +0100 Subject: Unicode escape error moved to tokenizer --- src/syntax/markup.rs | 10 +--------- src/syntax/mod.rs | 2 +- src/syntax/token.rs | 5 ++--- 3 files changed, 4 insertions(+), 13 deletions(-) (limited to 'src/syntax') 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), + UnicodeEscape(UnicodeEscapeToken), /// An arbitrary number of backticks followed by inner contents, terminated /// with the same number of backticks: `` `...` ``. Raw(Rc), 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, + pub character: char, } -- cgit v1.2.3