From 2acfb9e8701d2b001a82a6af75969a1df7d97b67 Mon Sep 17 00:00:00 2001 From: Jacky Zhao Date: Thu, 3 Aug 2023 23:08:04 -0700 Subject: [PATCH] format, add upstream --- quartz/bootstrap-cli.mjs | 5 ++- quartz/build.ts | 1 + quartz/plugins/transformers/ofm.ts | 60 +++++++++++++++--------------- 3 files changed, 36 insertions(+), 30 deletions(-) diff --git a/quartz/bootstrap-cli.mjs b/quartz/bootstrap-cli.mjs index 04ed3a2d0..0bb078a9d 100755 --- a/quartz/bootstrap-cli.mjs +++ b/quartz/bootstrap-cli.mjs @@ -10,7 +10,7 @@ import fs from "fs" import { intro, isCancel, outro, select, text } from "@clack/prompts" import { rimraf } from "rimraf" import prettyBytes from "pretty-bytes" -import { spawnSync } from "child_process" +import { execSync, spawnSync } from "child_process" import { transform as cssTransform } from "lightningcss" const ORIGIN_NAME = "origin" @@ -247,6 +247,9 @@ See the [documentation](https://quartz.jzhao.xyz) for how to get started. console.log( "Pulling updates... you may need to resolve some `git` conflicts if you've made changes to components or plugins.", ) + execSync( + `git remote show upstream || git remote add upstream https://github.com/jackyzha0/quartz.git`, + ) gitPull(UPSTREAM_NAME, QUARTZ_SOURCE_BRANCH) await popContentFolder(contentFolder) console.log("Ensuring dependencies are up to date") diff --git a/quartz/build.ts b/quartz/build.ts index c8b5b02d4..a29327770 100644 --- a/quartz/build.ts +++ b/quartz/build.ts @@ -91,6 +91,7 @@ async function startServing(ctx: BuildCtx, initialContent: ProcessedContent[]) { clearTimeout(timeoutId) } + // debounce rebuilds every 250ms timeoutId = setTimeout(async () => { const perf = new PerfTimer() console.log(chalk.yellow("Detected change, rebuilding...")) diff --git a/quartz/plugins/transformers/ofm.ts b/quartz/plugins/transformers/ofm.ts index 57a9b7f67..70155e0de 100644 --- a/quartz/plugins/transformers/ofm.ts +++ b/quartz/plugins/transformers/ofm.ts @@ -99,7 +99,6 @@ function canonicalizeCallout(calloutName: string): keyof typeof callouts { return calloutMapping[callout] } - const capitalize = (s: string): string => { return s.substring(0, 1).toUpperCase() + s.substring(1) } @@ -125,34 +124,34 @@ export const ObsidianFlavoredMarkdown: QuartzTransformerPlugin 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 { @@ -292,7 +291,9 @@ export const ObsidianFlavoredMarkdown: QuartzTransformerPlugin 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 +335,9 @@ export const ObsidianFlavoredMarkdown: QuartzTransformerPlugin 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, },