From 4d338cec137a30fdc00771235f75d46fed878002 Mon Sep 17 00:00:00 2001
From: Aaron Pham <29749331+aarnphm@users.noreply.github.com>
Date: Sun, 21 Jan 2024 19:33:32 +0000
Subject: [PATCH] feat(ofm): add options to parse arrows (#713)
---
docs/features/Obsidian compatibility.md | 1 +
quartz/plugins/transformers/ofm.ts | 16 ++++++++++++++++
2 files changed, 17 insertions(+), 0 deletions(-)
diff --git a/docs/features/Obsidian compatibility.md b/docs/features/Obsidian compatibility.md
index d519e17..1254370 100644
--- a/docs/features/Obsidian compatibility.md
+++ b/docs/features/Obsidian compatibility.md
@@ -25,6 +25,7 @@
- `callouts`: whether to enable [[callouts]]. Defaults to `true`
- `mermaid`: whether to enable [[Mermaid diagrams]]. Defaults to `true`
- `parseTags`: whether to try and parse tags in the content body. Defaults to `true`
+ - `parseArrows`: whether to try and parse arrows in the content body. Defaults to `true`.
- `enableInHtmlEmbed`: whether to try and parse Obsidian flavoured markdown in raw HTML. Defaults to `false`
- `enableYouTubeEmbed`: whether to enable embedded YouTube videos using external image Markdown syntax. Defaults to `false`
- Link resolution behaviour:
diff --git a/quartz/plugins/transformers/ofm.ts b/quartz/plugins/transformers/ofm.ts
index 8c6f488..e1f7651 100644
--- a/quartz/plugins/transformers/ofm.ts
+++ b/quartz/plugins/transformers/ofm.ts
@@ -23,6 +23,7 @@
callouts: boolean
mermaid: boolean
parseTags: boolean
+ parseArrows: boolean
parseBlockReferences: boolean
enableInHtmlEmbed: boolean
enableYouTubeEmbed: boolean
@@ -36,6 +37,7 @@
callouts: true,
mermaid: true,
parseTags: true,
+ parseArrows: true,
parseBlockReferences: true,
enableInHtmlEmbed: false,
enableYouTubeEmbed: true,
@@ -111,6 +113,8 @@
export const externalLinkRegex = /^https?:\/\//i
+export const arrowRegex = new RegExp(/-{1,2}>/, "g")
+
// !? -> optional embedding
// \[\[ -> open brace
// ([^\[\]\|\#]+) -> one or more non-special characters ([,],|, or #) (name)
@@ -294,6 +298,18 @@
])
}
+ if (opts.parseArrows) {
+ replacements.push([
+ arrowRegex,
+ (_value: string, ..._capture: string[]) => {
+ return {
+ type: "html",
+ value: `<span>→</span>`,
+ }
+ },
+ ])
+ }
+
if (opts.parseTags) {
replacements.push([
tagRegex,
--
Gitblit v1.10.0