From 4461748a85b8795651d0c02451368dffff607938 Mon Sep 17 00:00:00 2001
From: Jacky Zhao <j.zhao2k19@gmail.com>
Date: Wed, 13 Sep 2023 16:43:30 +0000
Subject: [PATCH] fix dont show html in search when rssFullHtml is true (closes #474)

---
 quartz/plugins/emitters/contentIndex.ts |    8 ++-
 quartz/plugins/transformers/ofm.ts      |   56 ++++++++++++++--------------
 2 files changed, 33 insertions(+), 31 deletions(-)

diff --git a/quartz/plugins/emitters/contentIndex.ts b/quartz/plugins/emitters/contentIndex.ts
index 102394c..911173e 100644
--- a/quartz/plugins/emitters/contentIndex.ts
+++ b/quartz/plugins/emitters/contentIndex.ts
@@ -13,6 +13,7 @@
   links: SimpleSlug[]
   tags: string[]
   content: string
+  richContent?: string
   date?: Date
   description?: string
 }
@@ -53,7 +54,7 @@
     <title>${escapeHTML(content.title)}</title>
     <link>${root}/${encodeURI(slug)}</link>
     <guid>${root}/${encodeURI(slug)}</guid>
-    <description>${content.content}</description>
+    <description>${content.richContent ?? content.description}</description>
     <pubDate>${content.date?.toUTCString()}</pubDate>
   </item>`
 
@@ -92,9 +93,10 @@
             title: file.data.frontmatter?.title!,
             links: file.data.links ?? [],
             tags: file.data.frontmatter?.tags ?? [],
-            content: opts?.rssFullHtml
+            content: file.data.text ?? "",
+            richContent: opts?.rssFullHtml
               ? escapeHTML(toHtml(tree as Root, { allowDangerousHtml: true }))
-              : file.data.description ?? "",
+              : undefined,
             date: date,
             description: file.data.description ?? "",
           })
diff --git a/quartz/plugins/transformers/ofm.ts b/quartz/plugins/transformers/ofm.ts
index b2f1dba..811d659 100644
--- a/quartz/plugins/transformers/ofm.ts
+++ b/quartz/plugins/transformers/ofm.ts
@@ -1,7 +1,7 @@
 import { PluggableList } from "unified"
 import { QuartzTransformerPlugin } from "../types"
 import { Root, HTML, BlockContent, DefinitionContent, Code, Paragraph } from "mdast"
-import { Element, Literal } from 'hast'
+import { Element, Literal } from "hast"
 import { Replace, findAndReplace as mdastFindReplace } from "mdast-util-find-and-replace"
 import { slug as slugAnchor } from "github-slugger"
 import rehypeRaw from "rehype-raw"
@@ -137,29 +137,29 @@
   }
   const findAndReplace = opts.enableInHtmlEmbed
     ? (tree: Root, regex: RegExp, replace?: Replace | null | undefined) => {
-      if (replace) {
-        visit(tree, "html", (node: HTML) => {
-          if (typeof replace === "string") {
-            node.value = node.value.replace(regex, replace)
-          } else {
-            node.value = node.value.replaceAll(regex, (substring: string, ...args) => {
-              const replaceValue = replace(substring, ...args)
-              if (typeof replaceValue === "string") {
-                return replaceValue
-              } else if (Array.isArray(replaceValue)) {
-                return replaceValue.map(mdastToHtml).join("")
-              } else if (typeof replaceValue === "object" && replaceValue !== null) {
-                return mdastToHtml(replaceValue)
-              } else {
-                return substring
-              }
-            })
-          }
-        })
-      }
+        if (replace) {
+          visit(tree, "html", (node: HTML) => {
+            if (typeof replace === "string") {
+              node.value = node.value.replace(regex, replace)
+            } else {
+              node.value = node.value.replaceAll(regex, (substring: string, ...args) => {
+                const replaceValue = replace(substring, ...args)
+                if (typeof replaceValue === "string") {
+                  return replaceValue
+                } else if (Array.isArray(replaceValue)) {
+                  return replaceValue.map(mdastToHtml).join("")
+                } else if (typeof replaceValue === "object" && replaceValue !== null) {
+                  return mdastToHtml(replaceValue)
+                } else {
+                  return substring
+                }
+              })
+            }
+          })
+        }
 
-      mdastFindReplace(tree, regex, replace)
-    }
+        mdastFindReplace(tree, regex, replace)
+      }
     : mdastFindReplace
 
   return {
@@ -357,8 +357,9 @@
                 node.data = {
                   hProperties: {
                     ...(node.data?.hProperties ?? {}),
-                    className: `callout ${collapse ? "is-collapsible" : ""} ${defaultState === "collapsed" ? "is-collapsed" : ""
-                      }`,
+                    className: `callout ${collapse ? "is-collapsible" : ""} ${
+                      defaultState === "collapsed" ? "is-collapsed" : ""
+                    }`,
                     "data-callout": calloutType,
                     "data-callout-fold": collapse,
                   },
@@ -427,14 +428,14 @@
             visit(tree, "element", (node, _index, _parent) => {
               if (validTagTypes.has(node.tagName)) {
                 const last = node.children.at(-1) as Literal
-                if (last.value && typeof last.value === 'string') {
+                if (last.value && typeof last.value === "string") {
                   const matches = last.value.match(blockReferenceRegex)
                   if (matches && matches.length >= 1) {
                     last.value = last.value.slice(0, -matches[0].length)
                     const block = matches[0].slice(1)
                     node.properties = {
                       ...node.properties,
-                      id: block
+                      id: block,
                     }
                     file.data.blocks![block] = node
                   }
@@ -490,4 +491,3 @@
     blocks: Record<string, Element>
   }
 }
-

--
Gitblit v1.10.0