diff options
| author | Laurenz <laurmaedje@gmail.com> | 2020-12-31 17:05:00 +0100 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2020-12-31 17:48:56 +0100 |
| commit | 4069f0744dc24c05d5a6fd6d0530984c4c7ff881 (patch) | |
| tree | 64fb7211e638462779b03b4ae5b2ea0cc25d23d7 /src/parse/resolve.rs | |
| parent | ba3d43f7b2a18984be27f3d472884a19f3adce4c (diff) | |
Parsing improvements 🧽
- Simplified scanner code
- Peek eagerly
- Skip whitespace and comments automatically in header mode
- Parse simple block expressions
- Move literal definitions into expression module
- Raw resolving tests
Diffstat (limited to 'src/parse/resolve.rs')
| -rw-r--r-- | src/parse/resolve.rs | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/parse/resolve.rs b/src/parse/resolve.rs index 719e13e2..e908f22e 100644 --- a/src/parse/resolve.rs +++ b/src/parse/resolve.rs @@ -160,6 +160,38 @@ mod tests { } #[test] + fn test_resolve_raw() { + fn test( + raw: &str, + backticks: usize, + lang: Option<&str>, + lines: &[&str], + inline: bool, + ) { + assert_eq!(resolve_raw(raw, backticks), NodeRaw { + lang: lang.map(|id| Ident(id.into())), + lines: lines.iter().map(ToString::to_string).collect(), + inline, + }); + } + + // Just one backtick. + test("py", 1, None, &["py"], true); + test("1\n2", 1, None, &["1", "2"], true); + test("1\r\n2", 1, None, &["1", "2"], true); + + // More than one backtick with lang tag. + test("js alert()", 2, Some("js"), &["alert()"], true); + test("py quit(\n\n) ", 3, Some("py"), &["quit(", "", ")"], false); + test("♥", 2, None, &[], true); + + // Trimming of whitespace (tested more thoroughly in separate test). + test(" a", 2, None, &["a"], true); + test(" a", 2, None, &[" a"], true); + test(" \na", 2, None, &["a"], false); + } + + #[test] fn test_trim_raw() { fn test(text: &str, expected: Vec<&str>) { assert_eq!(trim_and_split_raw(text).0, expected); |
