From 7fa9253abc1e4056d425847e2eaa5a8e107fc297 Mon Sep 17 00:00:00 2001
From: Emile Bangma <github@emilebangma.com>
Date: Wed, 28 May 2025 23:20:59 +0000
Subject: [PATCH] Node 22 (#1997)
---
quartz/plugins/transformers/ofm.ts | 20 +++++++++++++++++---
1 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/quartz/plugins/transformers/ofm.ts b/quartz/plugins/transformers/ofm.ts
index e958027..42428ae 100644
--- a/quartz/plugins/transformers/ofm.ts
+++ b/quartz/plugins/transformers/ofm.ts
@@ -41,6 +41,7 @@
enableYouTubeEmbed: boolean
enableVideoEmbed: boolean
enableCheckbox: boolean
+ disableBrokenWikilinks: boolean
}
const defaultOptions: Options = {
@@ -56,6 +57,7 @@
enableYouTubeEmbed: true,
enableVideoEmbed: true,
enableCheckbox: false,
+ disableBrokenWikilinks: false,
}
const calloutMapping = {
@@ -113,9 +115,9 @@
// \[\[ -> open brace
// ([^\[\]\|\#]+) -> one or more non-special characters ([,],|, or #) (name)
// (#[^\[\]\|\#]+)? -> # then one or more non-special characters (heading link)
-// (\\?\|[^\[\]\#]+)? -> optional escape \ then | then one or more non-special characters (alias)
+// (\\?\|[^\[\]\#]+)? -> optional escape \ then | then zero or more non-special characters (alias)
export const wikilinkRegex = new RegExp(
- /!?\[\[([^\[\]\|\#\\]+)?(#+[^\[\]\|\#\\]+)?(\\?\|[^\[\]\#]+)?\]\]/g,
+ /!?\[\[([^\[\]\|\#\\]+)?(#+[^\[\]\|\#\\]+)?(\\?\|[^\[\]\#]*)?\]\]/g,
)
// ^\|([^\n])+\|\n(\|) -> matches the header row
@@ -206,7 +208,7 @@
return src
},
- markdownPlugins(_ctx) {
+ markdownPlugins(ctx) {
const plugins: PluggableList = []
// regex replacements
@@ -275,6 +277,18 @@
// otherwise, fall through to regular link
}
+ // treat as broken link if slug not in ctx.allSlugs
+ if (opts.disableBrokenWikilinks) {
+ const slug = slugifyFilePath(fp as FilePath)
+ const exists = ctx.allSlugs && ctx.allSlugs.includes(slug)
+ if (!exists) {
+ return {
+ type: "html",
+ value: `<a class=\"internal broken\">${alias ?? fp}</a>`,
+ }
+ }
+ }
+
// internal link
const url = fp + anchor
--
Gitblit v1.10.0