aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFuwn <[email protected]>2025-09-11 05:51:29 +0000
committerFuwn <[email protected]>2025-09-11 05:51:29 +0000
commitb45156082cfa08bf7e390d71c4a9c101eb460858 (patch)
tree17b204a836cac6ac90c7604d0602253fc95e2f91
parentchore: Bump version patch (diff)
downloadgerm-b45156082cfa08bf7e390d71c4a9c101eb460858.tar.xz
germ-b45156082cfa08bf7e390d71c4a9c101eb460858.zip
fix(ast): Gracefully handle malformed link lines
-rw-r--r--src/ast/container.rs2
-rw-r--r--tests/ast.rs14
2 files changed, 15 insertions, 1 deletions
diff --git a/src/ast/container.rs b/src/ast/container.rs
index 0d20193..bf4166c 100644
--- a/src/ast/container.rs
+++ b/src/ast/container.rs
@@ -206,7 +206,7 @@ impl Ast {
.into_iter();
nodes.push(Node::Link {
- to: split.next().expect("no location in link"),
+ to: split.next().unwrap_or_default(),
text: {
let rest = split.collect::<Vec<String>>().join(" ");
diff --git a/tests/ast.rs b/tests/ast.rs
index 397f752..7a71f5c 100644
--- a/tests/ast.rs
+++ b/tests/ast.rs
@@ -84,4 +84,18 @@ mod test {
"=> / Home"
);
}
+
+ #[test]
+ fn build_malformed_link_without_url() {
+ let ast = Ast::from_string("=>");
+
+ assert_eq!(ast.inner().len(), 1);
+
+ if let Node::Link { to, text } = ast.inner().first().unwrap() {
+ assert_eq!(to, "");
+ assert_eq!(text, &None);
+ } else {
+ panic!("Expected Link node");
+ }
+ }
}