pinakes-core: simplify extract_aliases; return Vec<String> directly

Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I020c7dc647ba7f2c4b45a951c23cb2226a6a6964
This commit is contained in:
raf 2026-02-09 15:01:51 +03:00
commit b09b405a5d
Signed by: NotAShelf
GPG key ID: 29D95B64378DB4BF

View file

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