From 1cc09ef76db129fb3670e95560312adeefab913c Mon Sep 17 00:00:00 2001
From: Jeffrey Fabian <jeffrey.fabian61@gmail.com>
Date: Tue, 29 Aug 2023 17:14:54 +0000
Subject: [PATCH] feat: support kebab-case and nested tags in Obsidian-flavored Markdown tag-in-content parsing (#425)
---
quartz/plugins/transformers/ofm.ts | 12 +++++++-----
1 files changed, 7 insertions(+), 5 deletions(-)
diff --git a/quartz/plugins/transformers/ofm.ts b/quartz/plugins/transformers/ofm.ts
index 4d1586f..2e8fadb 100644
--- a/quartz/plugins/transformers/ofm.ts
+++ b/quartz/plugins/transformers/ofm.ts
@@ -114,9 +114,11 @@
// from https://github.com/escwxyz/remark-obsidian-callout/blob/main/src/index.ts
const calloutRegex = new RegExp(/^\[\!(\w+)\]([+-]?)/)
const calloutLineRegex = new RegExp(/^> *\[\!\w+\][+-]?.*$/, "gm")
-// (?:^| ) -> non-capturing group, tag should start be separated by a space or be the start of the line
-// #(\w+) -> tag itself is # followed by a string of alpha-numeric characters
-const tagRegex = new RegExp(/(?:^| )#(\p{L}+)/, "gu")
+// (?:^| ) -> non-capturing group, tag should start be separated by a space or be the start of the line
+// #(...) -> capturing group, tag itself must start with #
+// (?:[-_\p{L}])+ -> non-capturing group, non-empty string of (Unicode-aware) alpha-numeric characters, hyphens and/or underscores
+// (?:\/[-_\p{L}]+)*) -> non-capturing group, matches an arbitrary number of tag strings separated by "/"
+const tagRegex = new RegExp(/(?:^| )#((?:[-_\p{L}\d])+(?:\/[-_\p{L}\d]+)*)/, "gu")
export const ObsidianFlavoredMarkdown: QuartzTransformerPlugin<Partial<Options> | undefined> = (
userOpts,
@@ -320,7 +322,7 @@
const titleHtml: HTML = {
type: "html",
- value: `<div
+ value: `<div
class="callout-title"
>
<div class="callout-icon">${callouts[calloutType]}</div>
@@ -429,7 +431,7 @@
script: `
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.esm.min.mjs';
const darkMode = document.documentElement.getAttribute('saved-theme') === 'dark'
- mermaid.initialize({
+ mermaid.initialize({
startOnLoad: false,
securityLevel: 'loose',
theme: darkMode ? 'dark' : 'default'
--
Gitblit v1.10.0