summaryrefslogtreecommitdiff
path: root/src/parse/resolve.rs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2020-12-31 17:05:00 +0100
committerLaurenz <laurmaedje@gmail.com>2020-12-31 17:48:56 +0100
commit4069f0744dc24c05d5a6fd6d0530984c4c7ff881 (patch)
tree64fb7211e638462779b03b4ae5b2ea0cc25d23d7 /src/parse/resolve.rs
parentba3d43f7b2a18984be27f3d472884a19f3adce4c (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.rs32
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);