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/worker.ts | 37 ++++++++++++++++++++++++++++++-------
1 files changed, 30 insertions(+), 7 deletions(-)
diff --git a/quartz/worker.ts b/quartz/worker.ts
index a209df9..c9cd980 100644
--- a/quartz/worker.ts
+++ b/quartz/worker.ts
@@ -3,23 +3,46 @@
import cfg from "../quartz.config"
import { Argv, BuildCtx } from "./util/ctx"
import { FilePath, FullSlug } from "./util/path"
-import { createFileParser, createProcessor } from "./processors/parse"
+import {
+ createFileParser,
+ createHtmlProcessor,
+ createMarkdownParser,
+ createMdProcessor,
+} from "./processors/parse"
import { options } from "./util/sourcemap"
+import { MarkdownContent, ProcessedContent } from "./plugins/vfile"
// only called from worker thread
-export async function parseFiles(
+export async function parseMarkdown(
buildId: string,
argv: Argv,
fps: FilePath[],
- allSlugs: FullSlug[],
-) {
+): Promise<[MarkdownContent[], FullSlug[]]> {
+ // this is a hack
+ // we assume markdown parsers can add to `allSlugs`,
+ // but don't actually use them
+ const allSlugs: FullSlug[] = []
const ctx: BuildCtx = {
buildId,
cfg,
argv,
allSlugs,
}
- const processor = createProcessor(ctx)
- const parse = createFileParser(ctx, fps)
- return parse(processor)
+ return [await createFileParser(ctx, fps)(createMdProcessor(ctx)), allSlugs]
+}
+
+// only called from worker thread
+export function processHtml(
+ buildId: string,
+ argv: Argv,
+ mds: MarkdownContent[],
+ allSlugs: FullSlug[],
+): Promise<ProcessedContent[]> {
+ const ctx: BuildCtx = {
+ buildId,
+ cfg,
+ argv,
+ allSlugs,
+ }
+ return createMarkdownParser(ctx, mds)(createHtmlProcessor(ctx))
}
--
Gitblit v1.10.0