From 51b43a2115a6b38bbaad67b203c2158a387b5588 Mon Sep 17 00:00:00 2001
From: Keisuke ANDO <g.kei0429@gmail.com>
Date: Tue, 27 May 2025 19:26:17 +0000
Subject: [PATCH] feat(links): added ofm option to style unresolved or broken links differently (#1992)

---
 quartz/plugins/transformers/ofm.ts |   16 +++++++++++++++-
 1 files changed, 15 insertions(+), 1 deletions(-)

diff --git a/quartz/plugins/transformers/ofm.ts b/quartz/plugins/transformers/ofm.ts
index ef59179..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 = {
@@ -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