From fa2ea2896f0977253733334199d28e509351e621 Mon Sep 17 00:00:00 2001
From: Silviu LorenČ› <124451350+smilorent@users.noreply.github.com>
Date: Sat, 17 Feb 2024 18:23:45 +0000
Subject: [PATCH] feat: add user-defined config for syntax highlighting plugin (#869)
---
quartz/plugins/transformers/syntax.ts | 47 ++++++++++++++++++++++++++++++-----------------
1 files changed, 30 insertions(+), 17 deletions(-)
diff --git a/quartz/plugins/transformers/syntax.ts b/quartz/plugins/transformers/syntax.ts
index e847729..f11734e 100644
--- a/quartz/plugins/transformers/syntax.ts
+++ b/quartz/plugins/transformers/syntax.ts
@@ -1,20 +1,33 @@
import { QuartzTransformerPlugin } from "../types"
-import rehypePrettyCode, { Options as CodeOptions } from "rehype-pretty-code"
+import rehypePrettyCode, { Options as CodeOptions, Theme as CodeTheme } from "rehype-pretty-code"
-export const SyntaxHighlighting: QuartzTransformerPlugin = () => ({
- name: "SyntaxHighlighting",
- htmlPlugins() {
- return [
- [
- rehypePrettyCode,
- {
- keepBackground: false,
- theme: {
- dark: "github-dark",
- light: "github-light",
- },
- } satisfies Partial<CodeOptions>,
- ],
- ]
+interface Theme extends Record<string, CodeTheme> {
+ light: CodeTheme
+ dark: CodeTheme
+}
+
+interface Options {
+ theme?: Theme
+ keepBackground?: boolean
+}
+
+const defaultOptions: Options = {
+ theme: {
+ light: "github-light",
+ dark: "github-dark",
},
-})
+ keepBackground: false,
+}
+
+export const SyntaxHighlighting: QuartzTransformerPlugin<Options> = (
+ userOpts?: Partial<Options>,
+) => {
+ const opts: Partial<CodeOptions> = { ...defaultOptions, ...userOpts }
+
+ return {
+ name: "SyntaxHighlighting",
+ htmlPlugins() {
+ return [[rehypePrettyCode, opts]]
+ },
+ }
+}
--
Gitblit v1.10.0