From df02ea20d7e12e8b9ffdd2968afaf5893c433488 Mon Sep 17 00:00:00 2001
From: Jacky Zhao <j.zhao2k19@gmail.com>
Date: Fri, 11 Aug 2023 04:32:11 +0000
Subject: [PATCH] spacing fix
---
quartz/plugins/transformers/ofm.ts | 81 +++++++++++++++++++++++-----------------
1 files changed, 46 insertions(+), 35 deletions(-)
diff --git a/quartz/plugins/transformers/ofm.ts b/quartz/plugins/transformers/ofm.ts
index 57a9b7f..e7438aa 100644
--- a/quartz/plugins/transformers/ofm.ts
+++ b/quartz/plugins/transformers/ofm.ts
@@ -96,10 +96,9 @@
function canonicalizeCallout(calloutName: string): keyof typeof callouts {
let callout = calloutName.toLowerCase() as keyof typeof calloutMapping
- return calloutMapping[callout]
+ return calloutMapping[callout] ?? calloutName
}
-
const capitalize = (s: string): string => {
return s.substring(0, 1).toUpperCase() + s.substring(1)
}
@@ -125,34 +124,34 @@
const findAndReplace = opts.enableInHtmlEmbed
? (tree: Root, regex: RegExp, replace?: Replace | null | undefined) => {
- if (replace) {
- const mdastToHtml = (ast: PhrasingContent) => {
- const hast = toHast(ast, { allowDangerousHtml: true })!
- return toHtml(hast, { allowDangerousHtml: true })
+ if (replace) {
+ const mdastToHtml = (ast: PhrasingContent) => {
+ const hast = toHast(ast, { allowDangerousHtml: true })!
+ return toHtml(hast, { allowDangerousHtml: true })
+ }
+
+ 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
+ }
+ })
+ }
+ })
}
- 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 {
@@ -185,7 +184,7 @@
// embed cases
if (value.startsWith("!")) {
- const ext: string | undefined = path.extname(fp).toLowerCase()
+ const ext: string = path.extname(fp).toLowerCase()
const url = slugifyFilePath(fp as FilePath) + ext
if ([".png", ".jpg", ".jpeg", ".gif", ".bmp", ".svg"].includes(ext)) {
const dims = alias ?? ""
@@ -219,14 +218,13 @@
type: "html",
value: `<iframe src="${url}"></iframe>`,
}
- } else {
- // TODO: this is the node embed case
+ } else if (ext === "") {
+ // TODO: note embed
}
// otherwise, fall through to regular link
}
// internal link
- // const url = transformInternalLink(fp + anchor)
const url = fp + anchor
return {
type: "link",
@@ -292,7 +290,9 @@
const match = firstLine.match(calloutRegex)
if (match && match.input) {
const [calloutDirective, typeString, collapseChar] = match
- const calloutType = canonicalizeCallout(typeString.toLowerCase() as keyof typeof calloutMapping)
+ const calloutType = canonicalizeCallout(
+ typeString.toLowerCase() as keyof typeof calloutMapping,
+ )
const collapse = collapseChar === "+" || collapseChar === "-"
const defaultState = collapseChar === "-" ? "collapsed" : "expanded"
const title =
@@ -334,8 +334,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,
},
@@ -412,7 +413,17 @@
js.push({
script: `
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.esm.min.mjs';
- mermaid.initialize({ startOnLoad: true });
+ const darkMode = document.documentElement.getAttribute('saved-theme') === 'dark'
+ mermaid.initialize({
+ startOnLoad: false,
+ securityLevel: 'loose',
+ theme: darkMode ? 'dark' : 'default'
+ });
+ document.addEventListener('nav', async () => {
+ await mermaid.run({
+ querySelector: '.mermaid'
+ })
+ });
`,
loadTime: "afterDOMReady",
moduleType: "module",
--
Gitblit v1.10.0