From cb8238d92b342de9a09cc7d31c01908ffdb9e35b Mon Sep 17 00:00:00 2001 From: saberzero1 Date: Tue, 22 Oct 2024 22:19:53 +0200 Subject: [PATCH] Add parser presets. --- quartz.config.ts | 47 +--------------- .../transformers/presets/commonmark.ts | 55 +++++++++++++++++++ .../plugins/transformers/presets/default.ts | 55 +++++++++++++++++++ quartz/plugins/transformers/presets/index.ts | 3 + .../plugins/transformers/presets/obsidian.ts | 51 +++++++++++++++++ quartz/plugins/types.ts | 8 +-- 6 files changed, 170 insertions(+), 49 deletions(-) create mode 100644 quartz/plugins/transformers/presets/commonmark.ts create mode 100644 quartz/plugins/transformers/presets/default.ts create mode 100644 quartz/plugins/transformers/presets/index.ts create mode 100644 quartz/plugins/transformers/presets/obsidian.ts diff --git a/quartz.config.ts b/quartz.config.ts index 884bf91d1..bf5c59c63 100644 --- a/quartz.config.ts +++ b/quartz.config.ts @@ -4,6 +4,7 @@ import * as Text from "./quartz/plugins/transformers/text" import * as Markdown from "./quartz/plugins/transformers/markdown" import * as Html from "./quartz/plugins/transformers/html" import * as Resources from "./quartz/plugins/transformers/resources" +import * as Presets from "./quartz/plugins/transformers/presets" /** * Quartz 4.0 Configuration @@ -58,51 +59,7 @@ const config: QuartzConfig = { }, }, plugins: { - transformers: { - textTransformers: [ - Text.ObsidianFlavoredMarkdownComments(), - Text.ObsidianFlavoredMarkdownCallouts(), - Text.ObsidianFlavoredMarkdownWikilinks(), - ], - markdownTransformers: [ - Markdown.FrontMatter(), - Markdown.CreatedModifiedDate({ - priority: ["frontmatter", "filesystem"], - }), - Markdown.ObsidianFlavoredMarkdownWikilinks(), - Markdown.ObsidianFlavoredMarkdownHighlight(), - Markdown.ObsidianFlavoredMarkdownArrow(), - Markdown.ObsidianFlavoredMarkdownTags(), - Markdown.ObsidianFlavoredMarkdownVideoEmbed(), - Markdown.ObsidianFlavoredMarkdownCallouts(), - Markdown.ObsidianFlavoredMarkdownMermaid(), - Markdown.GitHubFlavoredMarkdownRemark(), - Markdown.TableOfContents(), - Markdown.Latex(), - ], - htmlTransformers: [ - Html.SyntaxHighlighting({ - theme: { - light: "github-light", - dark: "github-dark", - }, - keepBackground: false, - }), - Html.ObsidianFlavoredMarkdownBlockReferences(), - Html.ObsidianFlavoredMarkdownYouTubeEmbed(), - Html.ObsidianFlavoredMarkdownCheckbox(), - Html.GitHubFlavoredMarkdownLinkHeadings(), - Html.CrawlLinks({ markdownLinkResolution: "shortest" }), - Html.Description(), - Html.Latex({ renderEngine: "katex" }), - ], - externalResources: [ - Resources.ObsidianFlavoredMarkdownCheckbox(), - Resources.ObsidianFlavoredMarkdownCallouts(), - Resources.ObsidianFlavoredMarkdownMermaid(), - Resources.Latex({ renderEngine: "katex" }), - ], - }, + transformers: Presets.DefaultPreset(), filters: [Plugin.RemoveDrafts()], emitters: [ Plugin.AliasRedirects(), diff --git a/quartz/plugins/transformers/presets/commonmark.ts b/quartz/plugins/transformers/presets/commonmark.ts new file mode 100644 index 000000000..a6a5ed7ca --- /dev/null +++ b/quartz/plugins/transformers/presets/commonmark.ts @@ -0,0 +1,55 @@ +import { QuartzTransformerPlugin } from "../../types" +import * as Text from "../text" +import * as Markdown from "../markdown" +import * as Html from "../html" +import * as Resources from "../resources" + +// TODO: commonmark compatibility pass +export const CommonMarkPreset: QuartzTransformerPlugin = () => { + return { + textTransformers: [ + Text.ObsidianFlavoredMarkdownComments(), + Text.ObsidianFlavoredMarkdownCallouts(), + Text.ObsidianFlavoredMarkdownWikilinks(), + ], + markdownTransformers: [ + Markdown.FrontMatter(), + Markdown.CreatedModifiedDate({ + priority: ["frontmatter", "filesystem"], + }), + // TODO: regular markdown links + //Markdown.ObsidianFlavoredMarkdownWikilinks(), + Markdown.ObsidianFlavoredMarkdownHighlight(), + Markdown.ObsidianFlavoredMarkdownArrow(), + Markdown.ObsidianFlavoredMarkdownTags(), + Markdown.ObsidianFlavoredMarkdownVideoEmbed(), + Markdown.ObsidianFlavoredMarkdownCallouts(), + Markdown.ObsidianFlavoredMarkdownMermaid(), + Markdown.GitHubFlavoredMarkdownRemark(), + Markdown.TableOfContents(), + Markdown.Latex(), + ], + htmlTransformers: [ + Html.SyntaxHighlighting({ + theme: { + light: "github-light", + dark: "github-dark", + }, + keepBackground: false, + }), + Html.ObsidianFlavoredMarkdownBlockReferences(), + Html.ObsidianFlavoredMarkdownYouTubeEmbed(), + Html.ObsidianFlavoredMarkdownCheckbox(), + Html.GitHubFlavoredMarkdownLinkHeadings(), + Html.CrawlLinks({ markdownLinkResolution: "shortest" }), + Html.Description(), + Html.Latex({ renderEngine: "katex" }), + ], + externalResources: [ + Resources.ObsidianFlavoredMarkdownCheckbox(), + Resources.ObsidianFlavoredMarkdownCallouts(), + Resources.ObsidianFlavoredMarkdownMermaid(), + Resources.Latex({ renderEngine: "katex" }), + ], + } +} diff --git a/quartz/plugins/transformers/presets/default.ts b/quartz/plugins/transformers/presets/default.ts new file mode 100644 index 000000000..aeb9f0e14 --- /dev/null +++ b/quartz/plugins/transformers/presets/default.ts @@ -0,0 +1,55 @@ +import { QuartzTransformerPlugin } from "../../types" +import * as Text from "../text" +import * as Markdown from "../markdown" +import * as Html from "../html" +import * as Resources from "../resources" + +export const DefaultPreset: QuartzTransformerPlugin = () => { + return { + textTransformers: [ + Text.ObsidianFlavoredMarkdownComments(), + Text.ObsidianFlavoredMarkdownCallouts(), + Text.ObsidianFlavoredMarkdownWikilinks(), + ], + markdownTransformers: [ + Markdown.FrontMatter(), + Markdown.CreatedModifiedDate({ + priority: ["frontmatter", "filesystem"], + }), + // TODO: wikilink fixes + Markdown.ObsidianFlavoredMarkdownWikilinks(), + Markdown.ObsidianFlavoredMarkdownHighlight(), + Markdown.ObsidianFlavoredMarkdownArrow(), + Markdown.ObsidianFlavoredMarkdownTags(), + Markdown.ObsidianFlavoredMarkdownVideoEmbed(), + // TODO: callout fixes + Markdown.ObsidianFlavoredMarkdownCallouts(), + Markdown.ObsidianFlavoredMarkdownMermaid(), + Markdown.GitHubFlavoredMarkdownRemark(), + Markdown.TableOfContents(), + Markdown.Latex(), + ], + htmlTransformers: [ + Html.SyntaxHighlighting({ + theme: { + light: "github-light", + dark: "github-dark", + }, + keepBackground: false, + }), + Html.ObsidianFlavoredMarkdownBlockReferences(), + Html.ObsidianFlavoredMarkdownYouTubeEmbed(), + Html.ObsidianFlavoredMarkdownCheckbox(), + Html.GitHubFlavoredMarkdownLinkHeadings(), + Html.CrawlLinks({ markdownLinkResolution: "shortest" }), + Html.Description(), + Html.Latex({ renderEngine: "katex" }), + ], + externalResources: [ + Resources.ObsidianFlavoredMarkdownCheckbox(), + Resources.ObsidianFlavoredMarkdownCallouts(), + Resources.ObsidianFlavoredMarkdownMermaid(), + Resources.Latex({ renderEngine: "katex" }), + ], + } +} diff --git a/quartz/plugins/transformers/presets/index.ts b/quartz/plugins/transformers/presets/index.ts new file mode 100644 index 000000000..00f8daf45 --- /dev/null +++ b/quartz/plugins/transformers/presets/index.ts @@ -0,0 +1,3 @@ +export { CommonMarkPreset } from "./commonmark" +export { DefaultPreset } from "./default" +export { ObsidianPreset } from "./obsidian" diff --git a/quartz/plugins/transformers/presets/obsidian.ts b/quartz/plugins/transformers/presets/obsidian.ts new file mode 100644 index 000000000..d8600d718 --- /dev/null +++ b/quartz/plugins/transformers/presets/obsidian.ts @@ -0,0 +1,51 @@ +import { QuartzTransformerPlugin } from "../../types" +import * as Text from "../text" +import * as Markdown from "../markdown" +import * as Html from "../html" +import * as Resources from "../resources" + +export const ObsidianPreset: QuartzTransformerPlugin = () => { + return { + textTransformers: [ + Text.ObsidianFlavoredMarkdownComments(), + Text.ObsidianFlavoredMarkdownCallouts(), + Text.ObsidianFlavoredMarkdownWikilinks(), + ], + markdownTransformers: [ + Markdown.FrontMatter(), + Markdown.CreatedModifiedDate({ + priority: ["frontmatter", "filesystem"], + }), + Markdown.ObsidianFlavoredMarkdownWikilinks(), + Markdown.ObsidianFlavoredMarkdownHighlight(), + Markdown.ObsidianFlavoredMarkdownArrow(), + Markdown.ObsidianFlavoredMarkdownTags(), + Markdown.ObsidianFlavoredMarkdownVideoEmbed(), + Markdown.ObsidianFlavoredMarkdownCallouts(), + Markdown.ObsidianFlavoredMarkdownMermaid(), + Markdown.TableOfContents(), + Markdown.Latex(), + ], + htmlTransformers: [ + Html.SyntaxHighlighting({ + theme: { + light: "github-light", + dark: "github-dark", + }, + keepBackground: false, + }), + Html.ObsidianFlavoredMarkdownBlockReferences(), + Html.ObsidianFlavoredMarkdownYouTubeEmbed(), + Html.ObsidianFlavoredMarkdownCheckbox(), + Html.CrawlLinks({ markdownLinkResolution: "shortest" }), + Html.Description(), + Html.Latex({ renderEngine: "katex" }), + ], + externalResources: [ + Resources.ObsidianFlavoredMarkdownCheckbox(), + Resources.ObsidianFlavoredMarkdownCallouts(), + Resources.ObsidianFlavoredMarkdownMermaid(), + Resources.Latex({ renderEngine: "katex" }), + ], + } +} diff --git a/quartz/plugins/types.ts b/quartz/plugins/types.ts index 15408c2b0..85f50a6ed 100644 --- a/quartz/plugins/types.ts +++ b/quartz/plugins/types.ts @@ -46,10 +46,10 @@ export type ExternalResourcePluginInstance = { } export type QuartzTransformerPlugin = ( - textTransformers: TextTransformerPlugin, - markdownTransformers: MarkdownTransformerPlugin, - htmlTransformers: HtmlTransformerPlugin, - externalResources: ExternalResourcePlugin, + textTransformers?: TextTransformerPlugin, + markdownTransformers?: MarkdownTransformerPlugin, + htmlTransformers?: HtmlTransformerPlugin, + externalResources?: ExternalResourcePlugin, ) => QuartzTransformerPluginInstance export type QuartzTransformerPluginInstance = { //name: string,