From c90dbacab05d2ceab84b53c66c7be77b4dda47ef Mon Sep 17 00:00:00 2001
From: Anton Bulakh <him@necauq.ua>
Date: Tue, 07 Jan 2025 20:33:34 +0000
Subject: [PATCH] chore(build): separate markdown and html handling into two separate stages (#1675)
---
quartz/plugins/transformers/ofm.ts | 24 +++++-------------------
1 files changed, 5 insertions(+), 19 deletions(-)
diff --git a/quartz/plugins/transformers/ofm.ts b/quartz/plugins/transformers/ofm.ts
index 94cc7b6..87c22e6 100644
--- a/quartz/plugins/transformers/ofm.ts
+++ b/quartz/plugins/transformers/ofm.ts
@@ -11,9 +11,6 @@
import calloutScript from "../../components/scripts/callout.inline.ts"
// @ts-ignore
import checkboxScript from "../../components/scripts/checkbox.inline.ts"
-// @ts-ignore
-import mermaidExtensionScript from "../../components/scripts/mermaid.inline.ts"
-import mermaidStyle from "../../components/styles/mermaid.inline.scss"
import { FilePath, pathToRoot, slugTag, slugifyFilePath } from "../../util/path"
import { toHast } from "mdast-util-to-hast"
import { toHtml } from "hast-util-to-html"
@@ -124,12 +121,12 @@
// from https://github.com/escwxyz/remark-obsidian-callout/blob/main/src/index.ts
const calloutRegex = new RegExp(/^\[\!([\w-]+)\|?(.+?)?\]([+-]?)/)
const calloutLineRegex = new RegExp(/^> *\[\!\w+\|?.*?\][+-]?.*$/gm)
-// (?:^| ) -> non-capturing group, tag should start be separated by a space or be the start of the line
+// (?<=^| ) -> a lookbehind assertion, tag should start be separated by a space or be the start of the line
// #(...) -> capturing group, tag itself must start with #
// (?:[-_\p{L}\d\p{Z}])+ -> non-capturing group, non-empty string of (Unicode-aware) alpha-numeric characters and symbols, hyphens and/or underscores
// (?:\/[-_\p{L}\d\p{Z}]+)*) -> non-capturing group, matches an arbitrary number of tag strings separated by "/"
const tagRegex = new RegExp(
- /(?:^| )#((?:[-_\p{L}\p{Emoji}\p{M}\d])+(?:\/[-_\p{L}\p{Emoji}\p{M}\d]+)*)/gu,
+ /(?<=^| )#((?:[-_\p{L}\p{Emoji}\p{M}\d])+(?:\/[-_\p{L}\p{Emoji}\p{M}\d]+)*)/gu,
)
const blockReferenceRegex = new RegExp(/\^([-_A-Za-z0-9]+)$/g)
const ytLinkRegex = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/
@@ -513,9 +510,10 @@
if (opts.mermaid) {
plugins.push(() => {
- return (tree: Root, _file) => {
+ return (tree: Root, file) => {
visit(tree, "code", (node: Code) => {
if (node.lang === "mermaid") {
+ file.data.hasMermaidDiagram = true
node.data = {
hProperties: {
className: ["mermaid"],
@@ -813,19 +811,6 @@
})
}
- if (opts.mermaid) {
- js.push({
- script: mermaidExtensionScript,
- loadTime: "afterDOMReady",
- moduleType: "module",
- contentType: "inline",
- })
- css.push({
- content: mermaidStyle,
- inline: true,
- })
- }
-
return { js, css }
},
}
@@ -835,5 +820,6 @@
interface DataMap {
blocks: Record<string, Element>
htmlAst: HtmlRoot
+ hasMermaidDiagram: boolean | undefined
}
}
--
Gitblit v1.10.0