diff --git a/crates/pinakes-core/src/links.rs b/crates/pinakes-core/src/links.rs index 6b7cfcf..a8531a8 100644 --- a/crates/pinakes-core/src/links.rs +++ b/crates/pinakes-core/src/links.rs @@ -12,7 +12,6 @@ use std::path::Path; use regex::Regex; use uuid::Uuid; -use crate::error::Result; use crate::model::{LinkType, MarkdownLink, MediaId}; /// Configuration for context extraction around links @@ -279,36 +278,40 @@ pub fn resolve_link_candidates( /// /// Obsidian uses the `aliases` field in frontmatter to define alternative names /// for a note that can be used in wikilinks. -pub fn extract_aliases(content: &str) -> Result> { - let parsed = gray_matter::Matter::::new().parse(content); +pub fn extract_aliases(content: &str) -> Vec { + let Ok(parsed) = gray_matter::Matter::::new().parse(content) else { + return Vec::new(); + }; - if let Some(data) = parsed.ok().and_then(|p| p.data) { - if let gray_matter::Pod::Hash(map) = data { - if let Some(aliases) = map.get("aliases") { - match aliases { - gray_matter::Pod::Array(arr) => { - return Ok(arr - .iter() - .filter_map(|a| { - if let gray_matter::Pod::String(s) = a { - Some(s.clone()) - } else { - None - } - }) - .collect()); - } - gray_matter::Pod::String(s) => { - // Single alias as string - return Ok(vec![s.clone()]); - } - _ => {} + let Some(data) = parsed.data else { + return Vec::new(); + }; + + let gray_matter::Pod::Hash(map) = data else { + return Vec::new(); + }; + + let Some(aliases) = map.get("aliases") else { + return Vec::new(); + }; + + match aliases { + gray_matter::Pod::Array(arr) => arr + .iter() + .filter_map(|a| { + if let gray_matter::Pod::String(s) = a { + Some(s.clone()) + } else { + None } - } + }) + .collect(), + gray_matter::Pod::String(s) => { + // Single alias as string + vec![s.clone()] } + _ => Vec::new(), } - - Ok(Vec::new()) } #[cfg(test)] @@ -408,11 +411,9 @@ And an embedded image: ![[diagram.png]] // Should include relative path and .md variations assert!(!candidates.is_empty()); - assert!( - candidates - .iter() - .any(|p| p.to_string_lossy().contains("My Note.md")) - ); + assert!(candidates + .iter() + .any(|p| p.to_string_lossy().contains("My Note.md"))); } #[test] @@ -426,7 +427,7 @@ aliases: # Content here "#; - let aliases = extract_aliases(content).unwrap(); + let aliases = extract_aliases(content); assert_eq!(aliases, vec!["Alternative Name", "Another Alias"]); } @@ -439,7 +440,7 @@ aliases: Single Alias # Content "#; - let aliases = extract_aliases(content).unwrap(); + let aliases = extract_aliases(content); assert_eq!(aliases, vec!["Single Alias"]); }