From e5558c76215081713594783da4861b1c050be6b4 Mon Sep 17 00:00:00 2001 From: Emile Bangma Date: Thu, 19 Sep 2024 12:57:23 +0000 Subject: [PATCH] Obsidian Parser (Comments) --- quartz/plugins/parsers/obsidian/comments.ts | 49 +++++++++++++++++++++ quartz/plugins/parsers/obsidian/index.ts | 1 + quartz/plugins/parsers/obsidian/text.ts | 0 quartz/plugins/transformers/markdown.ts | 2 + 4 files changed, 52 insertions(+) create mode 100644 quartz/plugins/parsers/obsidian/comments.ts delete mode 100644 quartz/plugins/parsers/obsidian/text.ts diff --git a/quartz/plugins/parsers/obsidian/comments.ts b/quartz/plugins/parsers/obsidian/comments.ts new file mode 100644 index 000000000..235c75baf --- /dev/null +++ b/quartz/plugins/parsers/obsidian/comments.ts @@ -0,0 +1,49 @@ +import { QuartzParserPlugin } from "../../types" +import { ReplaceFunction, findAndReplace as mdastFindReplace } from "mdast-util-find-and-replace" +import { JSResource } from "../../../util/resources" +import { Root } from "mdast" +import { Pluggable } from "unified" + +interface Options { + enabled: Boolean +} + +const defaultOptions: Options = { + enabled: true, +} + +const commentRegex = new RegExp(/%%[\s\S]*?%%/g) + +export const ObsidianComments: QuartzParserPlugin> = (userOpts) => { + const opts: Options = { ...defaultOptions, ...userOpts } + return { + name: "ObsidianComments", + textTransform(_ctx, src: string | Buffer) { + // do comments at text level + if (src instanceof Buffer) { + src = src.toString() + } + + src = src.replace(commentRegex, "") + + return src + }, + markdownPlugins(_ctx) { + const plug: Pluggable = (tree: Root, _file) => { + if (opts.enabled) { + const replacements: [RegExp, string | ReplaceFunction][] = [] + mdastFindReplace(tree, replacements) + } + } + return plug + }, + htmlPlugins(_ctx) { + const plug: Pluggable = () => {} + return plug + }, + externalResources(_ctx) { + const js = [] as JSResource[] + return { js } + }, + } +} diff --git a/quartz/plugins/parsers/obsidian/index.ts b/quartz/plugins/parsers/obsidian/index.ts index 7df56c7e6..ca865e2da 100644 --- a/quartz/plugins/parsers/obsidian/index.ts +++ b/quartz/plugins/parsers/obsidian/index.ts @@ -1,4 +1,5 @@ export { ObsidianArrow } from "./arrows" export { ObsidianCallouts } from "./callouts" +export { ObsidianComments } from "./comments" export { ObsidianHighlights } from "./highlights" export { ObsidianWikilinks } from "./wikilinks" diff --git a/quartz/plugins/parsers/obsidian/text.ts b/quartz/plugins/parsers/obsidian/text.ts deleted file mode 100644 index e69de29bb..000000000 diff --git a/quartz/plugins/transformers/markdown.ts b/quartz/plugins/transformers/markdown.ts index 942580e0c..fdfecfa3c 100644 --- a/quartz/plugins/transformers/markdown.ts +++ b/quartz/plugins/transformers/markdown.ts @@ -38,6 +38,7 @@ import rehypeAutolinkHeadings from "rehype-autolink-headings" import { ObsidianArrow, ObsidianCallouts, + ObsidianComments, ObsidianHighlights, ObsidianWikilinks, } from "../parsers/obsidian" @@ -178,6 +179,7 @@ export const ObsidianFlavoredMarkdown: QuartzTransformerPlugin