fix dont show html in search when rssFullHtml is true (closes #474)
This commit is contained in:
		
							parent
							
								
									6ecdcb5e24
								
							
						
					
					
						commit
						4461748a85
					
				
					 2 changed files with 33 additions and 31 deletions
				
			
		| 
						 | 
					@ -13,6 +13,7 @@ export type ContentDetails = {
 | 
				
			||||||
  links: SimpleSlug[]
 | 
					  links: SimpleSlug[]
 | 
				
			||||||
  tags: string[]
 | 
					  tags: string[]
 | 
				
			||||||
  content: string
 | 
					  content: string
 | 
				
			||||||
 | 
					  richContent?: string
 | 
				
			||||||
  date?: Date
 | 
					  date?: Date
 | 
				
			||||||
  description?: string
 | 
					  description?: string
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -53,7 +54,7 @@ function generateRSSFeed(cfg: GlobalConfiguration, idx: ContentIndex, limit?: nu
 | 
				
			||||||
    <title>${escapeHTML(content.title)}</title>
 | 
					    <title>${escapeHTML(content.title)}</title>
 | 
				
			||||||
    <link>${root}/${encodeURI(slug)}</link>
 | 
					    <link>${root}/${encodeURI(slug)}</link>
 | 
				
			||||||
    <guid>${root}/${encodeURI(slug)}</guid>
 | 
					    <guid>${root}/${encodeURI(slug)}</guid>
 | 
				
			||||||
    <description>${content.content}</description>
 | 
					    <description>${content.richContent ?? content.description}</description>
 | 
				
			||||||
    <pubDate>${content.date?.toUTCString()}</pubDate>
 | 
					    <pubDate>${content.date?.toUTCString()}</pubDate>
 | 
				
			||||||
  </item>`
 | 
					  </item>`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -92,9 +93,10 @@ export const ContentIndex: QuartzEmitterPlugin<Partial<Options>> = (opts) => {
 | 
				
			||||||
            title: file.data.frontmatter?.title!,
 | 
					            title: file.data.frontmatter?.title!,
 | 
				
			||||||
            links: file.data.links ?? [],
 | 
					            links: file.data.links ?? [],
 | 
				
			||||||
            tags: file.data.frontmatter?.tags ?? [],
 | 
					            tags: file.data.frontmatter?.tags ?? [],
 | 
				
			||||||
            content: opts?.rssFullHtml
 | 
					            content: file.data.text ?? "",
 | 
				
			||||||
 | 
					            richContent: opts?.rssFullHtml
 | 
				
			||||||
              ? escapeHTML(toHtml(tree as Root, { allowDangerousHtml: true }))
 | 
					              ? escapeHTML(toHtml(tree as Root, { allowDangerousHtml: true }))
 | 
				
			||||||
              : file.data.description ?? "",
 | 
					              : undefined,
 | 
				
			||||||
            date: date,
 | 
					            date: date,
 | 
				
			||||||
            description: file.data.description ?? "",
 | 
					            description: file.data.description ?? "",
 | 
				
			||||||
          })
 | 
					          })
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,7 @@
 | 
				
			||||||
import { PluggableList } from "unified"
 | 
					import { PluggableList } from "unified"
 | 
				
			||||||
import { QuartzTransformerPlugin } from "../types"
 | 
					import { QuartzTransformerPlugin } from "../types"
 | 
				
			||||||
import { Root, HTML, BlockContent, DefinitionContent, Code, Paragraph } from "mdast"
 | 
					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 { Replace, findAndReplace as mdastFindReplace } from "mdast-util-find-and-replace"
 | 
				
			||||||
import { slug as slugAnchor } from "github-slugger"
 | 
					import { slug as slugAnchor } from "github-slugger"
 | 
				
			||||||
import rehypeRaw from "rehype-raw"
 | 
					import rehypeRaw from "rehype-raw"
 | 
				
			||||||
| 
						 | 
					@ -137,29 +137,29 @@ export const ObsidianFlavoredMarkdown: QuartzTransformerPlugin<Partial<Options>
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  const findAndReplace = opts.enableInHtmlEmbed
 | 
					  const findAndReplace = opts.enableInHtmlEmbed
 | 
				
			||||||
    ? (tree: Root, regex: RegExp, replace?: Replace | null | undefined) => {
 | 
					    ? (tree: Root, regex: RegExp, replace?: Replace | null | undefined) => {
 | 
				
			||||||
      if (replace) {
 | 
					        if (replace) {
 | 
				
			||||||
        visit(tree, "html", (node: HTML) => {
 | 
					          visit(tree, "html", (node: HTML) => {
 | 
				
			||||||
          if (typeof replace === "string") {
 | 
					            if (typeof replace === "string") {
 | 
				
			||||||
            node.value = node.value.replace(regex, replace)
 | 
					              node.value = node.value.replace(regex, replace)
 | 
				
			||||||
          } else {
 | 
					            } else {
 | 
				
			||||||
            node.value = node.value.replaceAll(regex, (substring: string, ...args) => {
 | 
					              node.value = node.value.replaceAll(regex, (substring: string, ...args) => {
 | 
				
			||||||
              const replaceValue = replace(substring, ...args)
 | 
					                const replaceValue = replace(substring, ...args)
 | 
				
			||||||
              if (typeof replaceValue === "string") {
 | 
					                if (typeof replaceValue === "string") {
 | 
				
			||||||
                return replaceValue
 | 
					                  return replaceValue
 | 
				
			||||||
              } else if (Array.isArray(replaceValue)) {
 | 
					                } else if (Array.isArray(replaceValue)) {
 | 
				
			||||||
                return replaceValue.map(mdastToHtml).join("")
 | 
					                  return replaceValue.map(mdastToHtml).join("")
 | 
				
			||||||
              } else if (typeof replaceValue === "object" && replaceValue !== null) {
 | 
					                } else if (typeof replaceValue === "object" && replaceValue !== null) {
 | 
				
			||||||
                return mdastToHtml(replaceValue)
 | 
					                  return mdastToHtml(replaceValue)
 | 
				
			||||||
              } else {
 | 
					                } else {
 | 
				
			||||||
                return substring
 | 
					                  return substring
 | 
				
			||||||
              }
 | 
					                }
 | 
				
			||||||
            })
 | 
					              })
 | 
				
			||||||
          }
 | 
					            }
 | 
				
			||||||
        })
 | 
					          })
 | 
				
			||||||
      }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      mdastFindReplace(tree, regex, replace)
 | 
					        mdastFindReplace(tree, regex, replace)
 | 
				
			||||||
    }
 | 
					      }
 | 
				
			||||||
    : mdastFindReplace
 | 
					    : mdastFindReplace
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return {
 | 
					  return {
 | 
				
			||||||
| 
						 | 
					@ -357,8 +357,9 @@ export const ObsidianFlavoredMarkdown: QuartzTransformerPlugin<Partial<Options>
 | 
				
			||||||
                node.data = {
 | 
					                node.data = {
 | 
				
			||||||
                  hProperties: {
 | 
					                  hProperties: {
 | 
				
			||||||
                    ...(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": calloutType,
 | 
				
			||||||
                    "data-callout-fold": collapse,
 | 
					                    "data-callout-fold": collapse,
 | 
				
			||||||
                  },
 | 
					                  },
 | 
				
			||||||
| 
						 | 
					@ -427,14 +428,14 @@ export const ObsidianFlavoredMarkdown: QuartzTransformerPlugin<Partial<Options>
 | 
				
			||||||
            visit(tree, "element", (node, _index, _parent) => {
 | 
					            visit(tree, "element", (node, _index, _parent) => {
 | 
				
			||||||
              if (validTagTypes.has(node.tagName)) {
 | 
					              if (validTagTypes.has(node.tagName)) {
 | 
				
			||||||
                const last = node.children.at(-1) as Literal
 | 
					                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)
 | 
					                  const matches = last.value.match(blockReferenceRegex)
 | 
				
			||||||
                  if (matches && matches.length >= 1) {
 | 
					                  if (matches && matches.length >= 1) {
 | 
				
			||||||
                    last.value = last.value.slice(0, -matches[0].length)
 | 
					                    last.value = last.value.slice(0, -matches[0].length)
 | 
				
			||||||
                    const block = matches[0].slice(1)
 | 
					                    const block = matches[0].slice(1)
 | 
				
			||||||
                    node.properties = {
 | 
					                    node.properties = {
 | 
				
			||||||
                      ...node.properties,
 | 
					                      ...node.properties,
 | 
				
			||||||
                      id: block
 | 
					                      id: block,
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    file.data.blocks![block] = node
 | 
					                    file.data.blocks![block] = node
 | 
				
			||||||
                  }
 | 
					                  }
 | 
				
			||||||
| 
						 | 
					@ -490,4 +491,3 @@ declare module "vfile" {
 | 
				
			||||||
    blocks: Record<string, Element>
 | 
					    blocks: Record<string, Element>
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue