diff options
author | Rory Dudley | 2024-09-01 04:24:41 -0600 |
---|---|---|
committer | Rory Dudley | 2024-09-01 04:24:41 -0600 |
commit | d03b4643c9c4f85c642182da7a56a613b6f819d4 (patch) | |
tree | 8b82edaa874486fe46a12a25e408f796f8a5d875 /src/poem/read | |
parent | 6328666624e59574946f7af1570c5676aa54d0ac (diff) | |
download | dwarvish-d03b4643c9c4f85c642182da7a56a613b6f819d4.tar.gz |
Allow escaping characters
This patch adds the '\' character as a new rune, Rune::Special. This is
for escaping special characters. Also works in strings (", ').
Diffstat (limited to 'src/poem/read')
-rw-r--r-- | src/poem/read/parse.rs | 16 |
1 files changed, 16 insertions, 0 deletions
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; |