From a358bcbd614f09da614d305ecbdcbce84a69e123 Mon Sep 17 00:00:00 2001 From: Martin Keegan Date: Sun, 24 Aug 2025 18:29:39 +0100 Subject: [PATCH] Handle the case where links are delimited from alts by a tab --- src/line/link.rs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/line/link.rs b/src/line/link.rs index 0d2aff9..ea2599f 100644 --- a/src/line/link.rs +++ b/src/line/link.rs @@ -1,4 +1,5 @@ use glib::{DateTime, TimeZone, Uri, UriFlags}; +const SEP: [char; 2] = [' ', '\t']; const S: char = ' '; pub const TAG: &str = "=>"; @@ -18,8 +19,8 @@ impl Link { /// Parse `Self` from line string pub fn parse(line: &str) -> Option { - let l = line.strip_prefix(TAG)?.trim(); - let u = l.find(S).map_or(l, |i| &l[..i]); + let l = line.strip_prefix(TAG)?.trim_matches(&SEP); + let u = l.find(|c: char| SEP.contains(&c)).map_or(l, |i| &l[..i]); if u.is_empty() { return None; } @@ -117,3 +118,14 @@ fn test() { assert_eq!(link.to_source(), SOURCE); } + +#[test] +fn test_tab() { + use crate::line::Link; + + const SOURCE: &str = "=> gemlog/\tMy gemlog - verbose ramblings"; + + let link = Link::parse(SOURCE).unwrap(); + assert_eq!(link.alt, Some("My gemlog - verbose ramblings".to_string())); + assert_eq!(link.url, "gemlog/"); +}