From 5c29835f70178e64daeae9b82111fe31376f6f35 Mon Sep 17 00:00:00 2001 From: Rory Dudley Date: Sun, 1 Sep 2024 04:26:32 -0600 Subject: Allow escaping characters This patch adds the '\' character as a new rune, Rune::Special. This is for escaping special characters. Also works in strings (", '). Signed-off-by: Rory Dudley --- src/poem/read/parse.rs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/poem/read/parse.rs') diff --git a/src/poem/read/parse.rs b/src/poem/read/parse.rs index fc1979f..0b6c5a3 100644 --- a/src/poem/read/parse.rs +++ b/src/poem/read/parse.rs @@ -74,6 +74,14 @@ macro_rules! string { $word.push('\x0e'); $i += 1; } + Some(c) if c == '\\' => { + let c = match $chars.next() { + Some(c) => c, + None => continue, + }; + $word.push(c); + $i += 1; + } Some(c) => { $word.push(c); $i += 1; @@ -108,6 +116,14 @@ macro_rules! poem { match $chars.next() { None => return Err(Mishap::PartialMishap($j, $i, $c)), Some(c) if c == token => break, + Some(c) if c == '\\' => { + let c = match $chars.next() { + Some(c) => c, + None => continue, + }; + $word.push(c); + $i += 1; + } Some(c) => { poetry.push(c); $i += 1; -- cgit v1.2.3