Jacky Zhao
2023-08-17 2f6747b1666316e579c6e7238092ac6a65d00925
quartz/plugins/transformers/ofm.ts
@@ -6,10 +6,10 @@
import rehypeRaw from "rehype-raw"
import { visit } from "unist-util-visit"
import path from "path"
import { JSResource } from "../../resources"
import { JSResource } from "../../util/resources"
// @ts-ignore
import calloutScript from "../../components/scripts/callout.inline.ts"
import { FilePath, canonicalizeServer, pathToRoot, slugTag, slugifyFilePath } from "../../path"
import { FilePath, canonicalizeServer, pathToRoot, slugTag, slugifyFilePath } from "../../util/path"
import { toHast } from "mdast-util-to-hast"
import { toHtml } from "hast-util-to-html"
import { PhrasingContent } from "mdast-util-find-and-replace/lib"
@@ -129,29 +129,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 {
@@ -294,7 +294,7 @@
              }
              const text = firstChild.children[0].value
              const restChildren = firstChild.children.splice(1)
              const restChildren = firstChild.children.slice(1)
              const [firstLine, ...remainingLines] = text.split("\n")
              const remainingText = remainingLines.join("\n")
@@ -309,11 +309,8 @@
                const titleContent =
                  match.input.slice(calloutDirective.length).trim() || capitalize(calloutType)
                const titleNode: Paragraph = {
                  type: 'paragraph',
                  children: [
                    {type: 'text', value: titleContent + " "},
                    ...restChildren
                  ]
                  type: "paragraph",
                  children: [{ type: "text", value: titleContent + " " }, ...restChildren],
                }
                const title = mdastToHtml(titleNode)
@@ -352,8 +349,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,
                  },