summaryrefslogtreecommitdiff
path: root/src/syntax
diff options
context:
space:
mode:
authorMartin Haug <mhaug@live.de>2021-10-31 18:52:48 +0100
committerMartin Haug <mhaug@live.de>2021-11-05 13:44:49 +0100
commit2e7d359e59a45849f53eea6e022ca83295f5a6e7 (patch)
tree6fc2b3e3f1c12f1326061cd09a374fc6dca3026a /src/syntax
parentc569e14c07902b23b7b3e29df4076cea1f4496cf (diff)
Unicode escape error moved to tokenizer
Diffstat (limited to 'src/syntax')
-rw-r--r--src/syntax/markup.rs10
-rw-r--r--src/syntax/mod.rs2
-rw-r--r--src/syntax/token.rs5
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,
}