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:
parent
a1906ece00
commit
530873b7a3
1 changed files with 20 additions and 4 deletions
|
|
@ -235,13 +235,24 @@ fn render_markdown(text: &str) -> String {
|
||||||
|
|
||||||
/// Convert wikilinks [[target]] and [[target|display]] to styled HTML links.
|
/// Convert wikilinks [[target]] and [[target|display]] to styled HTML links.
|
||||||
/// Uses a special URL scheme that can be intercepted by click handlers.
|
/// 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 {
|
fn convert_wikilinks(text: &str) -> String {
|
||||||
use regex::Regex;
|
use regex::Regex;
|
||||||
|
|
||||||
// Match embeds ![[target]] first, convert to a placeholder image/embed span
|
// 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: ®ex::Captures| {
|
let text = embed_re.replace_all(text, |caps: ®ex::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);
|
let alt = caps.get(2).map(|m| m.as_str().trim()).unwrap_or(target);
|
||||||
format!(
|
format!(
|
||||||
"<span class=\"wikilink-embed\" data-target=\"{}\" title=\"Embed: \
|
"<span class=\"wikilink-embed\" data-target=\"{}\" title=\"Embed: \
|
||||||
|
|
@ -253,9 +264,14 @@ fn convert_wikilinks(text: &str) -> String {
|
||||||
});
|
});
|
||||||
|
|
||||||
// Match wikilinks [[target]] or [[target|display]]
|
// 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: ®ex::Captures| {
|
let text = wikilink_re.replace_all(&text, |caps: ®ex::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);
|
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
|
// Create a styled link that uses a special pseudo-protocol scheme
|
||||||
// This makes it easier to intercept clicks via JavaScript
|
// This makes it easier to intercept clicks via JavaScript
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue