pinakes-ui: replace unwrap() with expect(); add # Panics section to convert_wikilinks`

Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: I984d4d9e636a6a4091cba6f4048c09826a6a6964
This commit is contained in:
raf 2026-03-12 20:59:38 +03:00
commit 530873b7a3
Signed by: NotAShelf
GPG key ID: 29D95B64378DB4BF

View file

@ -235,13 +235,24 @@ fn render_markdown(text: &str) -> String {
/// Convert wikilinks [[target]] and [[target|display]] to styled HTML links.
/// Uses a special URL scheme that can be intercepted by click handlers.
///
/// # Panics
///
/// Never panics because the regex patterns are hardcoded and syntactically
/// valid.
#[expect(clippy::expect_used)]
fn convert_wikilinks(text: &str) -> String {
use regex::Regex;
// Match embeds ![[target]] first, convert to a placeholder image/embed span
let embed_re = Regex::new(r"!\[\[([^\]|]+)(?:\|([^\]]+))?\]\]").unwrap();
let embed_re = Regex::new(r"!\[\[([^\]|]+)(?:\|([^\]]+))?\]\]")
.expect("invalid regex pattern for wikilink embeds");
let text = embed_re.replace_all(text, |caps: &regex::Captures| {
let target = caps.get(1).unwrap().as_str().trim();
let target = caps
.get(1)
.expect("capture group 1 always exists for wikilink embeds")
.as_str()
.trim();
let alt = caps.get(2).map(|m| m.as_str().trim()).unwrap_or(target);
format!(
"<span class=\"wikilink-embed\" data-target=\"{}\" title=\"Embed: \
@ -253,9 +264,14 @@ fn convert_wikilinks(text: &str) -> String {
});
// Match wikilinks [[target]] or [[target|display]]
let wikilink_re = Regex::new(r"\[\[([^\]|]+)(?:\|([^\]]+))?\]\]").unwrap();
let wikilink_re = Regex::new(r"\[\[([^\]|]+)(?:\|([^\]]+))?\]\]")
.expect("invalid regex pattern for wikilinks");
let text = wikilink_re.replace_all(&text, |caps: &regex::Captures| {
let target = caps.get(1).unwrap().as_str().trim();
let target = caps
.get(1)
.expect("capture group 1 always exists for wikilinks")
.as_str()
.trim();
let display = caps.get(2).map(|m| m.as_str().trim()).unwrap_or(target);
// Create a styled link that uses a special pseudo-protocol scheme
// This makes it easier to intercept clicks via JavaScript