Add non-breaking space 🔒

This commit is contained in:
Martin Haug 2020-08-31 12:11:34 +02:00
parent 696560622d
commit d0e252d116

View File

@ -104,7 +104,17 @@ impl Parser<'_> {
self.with_span(SyntaxNode::Code(Code { lang, lines, block })) self.with_span(SyntaxNode::Code(Code { lang, lines, block }))
} }
Token::Text(text) => self.with_span(SyntaxNode::Text(text.to_string())), Token::Text(text) => {
let mut text_s = String::with_capacity(text.len());
let mut iter = text.chars();
while let Some(c) = iter.next() {
match c {
'~' => text_s.push('\u{00A0}'),
_ => text_s.push(c),
}
}
self.with_span(SyntaxNode::Text(text_s.to_string()))
},
Token::UnicodeEscape { sequence, terminated } => { Token::UnicodeEscape { sequence, terminated } => {
if !terminated { if !terminated {
@ -1001,18 +1011,19 @@ mod tests {
#[test] #[test]
fn test_parse_simple_nodes() { fn test_parse_simple_nodes() {
t!("" => ); t!("" => );
t!("hi" => T("hi")); t!("hi" => T("hi"));
t!("*hi" => B, T("hi")); t!("*hi" => B, T("hi"));
t!("hi_" => T("hi"), I); t!("hi_" => T("hi"), I);
t!("hi you" => T("hi"), S, T("you")); t!("hi you" => T("hi"), S, T("you"));
t!("\\u{1f303}" => T("🌃")); t!("special~name" => T("special\u{00A0}name"));
t!("\n\n\nhello" => P, T("hello")); t!("\\u{1f303}" => T("🌃"));
t!(r"a\ b" => T("a"), L, S, T("b")); t!("\n\n\nhello" => P, T("hello"));
t!("`py`" => R!["py"]); t!(r"a\ b" => T("a"), L, S, T("b"));
t!("`hi\nyou" => R!["hi", "you"]); t!("`py`" => R!["py"]);
e!("`hi\nyou" => s(1,3, 1,3, "expected backtick")); t!("`hi\nyou" => R!["hi", "you"]);
t!("`hi\\`du`" => R!["hi`du"]); e!("`hi\nyou" => s(1,3, 1,3, "expected backtick"));
t!("`hi\\`du`" => R!["hi`du"]);
t!("```java System.out.print```" => C![Some("java"), "System.out.print"]); t!("```java System.out.print```" => C![Some("java"), "System.out.print"]);
t!("``` console.log(\n\"alert\"\n)" => C![None, "console.log(", "\"alert\"", ")"]); t!("``` console.log(\n\"alert\"\n)" => C![None, "console.log(", "\"alert\"", ")"]);