From 76c092dcf20959bc52fcb13b28cee50cd4217e40 Mon Sep 17 00:00:00 2001
From: Jacky Zhao <j.zhao2k19@gmail.com>
Date: Thu, 20 Jul 2023 04:59:48 +0000
Subject: [PATCH] add custom.scss
---
quartz/plugins/transformers/ofm.ts | 38 ++++++++++++++++++++++++++++++--------
1 files changed, 30 insertions(+), 8 deletions(-)
diff --git a/quartz/plugins/transformers/ofm.ts b/quartz/plugins/transformers/ofm.ts
index 3bbb693..41b3865 100644
--- a/quartz/plugins/transformers/ofm.ts
+++ b/quartz/plugins/transformers/ofm.ts
@@ -2,7 +2,6 @@
import { QuartzTransformerPlugin } from "../types"
import { Root, HTML, BlockContent, DefinitionContent, Code } from 'mdast'
import { findAndReplace } from "mdast-util-find-and-replace"
-import { slugify } from "../../path"
import { slug as slugAnchor } from 'github-slugger'
import rehypeRaw from "rehype-raw"
import { visit } from "unist-util-visit"
@@ -10,8 +9,10 @@
import { JSResource } from "../../resources"
// @ts-ignore
import calloutScript from "../../components/scripts/callout.inline.ts"
+import { FilePath, slugifyFilePath } from "../../path"
export interface Options {
+ comments: boolean
highlight: boolean
wikilinks: boolean
callouts: boolean
@@ -19,6 +20,7 @@
}
const defaultOptions: Options = {
+ comments: true,
highlight: true,
wikilinks: true,
callouts: true,
@@ -101,11 +103,14 @@
// ([^\[\]\|\#]+) -> one or more non-special characters ([,],|, or #) (name)
// (#[^\[\]\|\#]+)? -> # then one or more non-special characters (heading link)
// (|[^\[\]\|\#]+)? -> | then one or more non-special characters (alias)
-const backlinkRegex = new RegExp(/!?\[\[([^\[\]\|\#]+)(#[^\[\]\|\#]+)?(\|[^\[\]\|\#]+)?\]\]/, "g")
+const wikilinkRegex = new RegExp(/!?\[\[([^\[\]\|\#]+)(#[^\[\]\|\#]+)?(\|[^\[\]\|\#]+)?\]\]/, "g")
// Match highlights
const highlightRegex = new RegExp(/==(.+)==/, "g")
+// Match comments
+const commentRegex = new RegExp(/%%(.+)%%/, "g")
+
// from https://github.com/escwxyz/remark-obsidian-callout/blob/main/src/index.ts
const calloutRegex = new RegExp(/^\[\!(\w+)\]([+-]?)/)
@@ -117,7 +122,7 @@
// pre-transform wikilinks (fix anchors to things that may contain illegal syntax e.g. codeblocks, latex)
if (opts.wikilinks) {
src = src.toString()
- return src.replaceAll(backlinkRegex, (value, ...capture) => {
+ return src.replaceAll(wikilinkRegex, (value, ...capture) => {
const [fp, rawHeader, rawAlias] = capture
const anchor = rawHeader?.trim().slice(1)
const displayAnchor = anchor ? `#${slugAnchor(anchor)}` : ""
@@ -133,15 +138,16 @@
if (opts.wikilinks) {
plugins.push(() => {
return (tree: Root, _file) => {
- findAndReplace(tree, backlinkRegex, (value: string, ...capture: string[]) => {
- const [fp, rawHeader, rawAlias] = capture
+ findAndReplace(tree, wikilinkRegex, (value: string, ...capture: string[]) => {
+ let [fp, rawHeader, rawAlias] = capture
+ fp = fp.trim()
const anchor = rawHeader?.trim() ?? ""
const alias = rawAlias?.slice(1).trim()
// embed cases
if (value.startsWith("!")) {
- const ext = path.extname(fp).toLowerCase()
- const url = slugify(fp.trim()) + ext
+ const ext: string | undefined = path.extname(fp).toLowerCase()
+ const url = slugifyFilePath(fp as FilePath) + ext
if ([".png", ".jpg", ".jpeg", ".gif", ".bmp", ".svg"].includes(ext)) {
const dims = alias ?? ""
let [width, height] = dims.split("x", 2)
@@ -171,12 +177,15 @@
type: 'html',
value: `<iframe src="${url}"></iframe>`
}
+ } else {
+ // TODO: this is the node embed case
}
// otherwise, fall through to regular link
}
// internal link
- const url = slugify(fp.trim() + anchor)
+ // const url = transformInternalLink(fp + anchor)
+ const url = fp + anchor
return {
type: 'link',
url,
@@ -204,6 +213,19 @@
}
})
}
+
+ if (opts.comments) {
+ plugins.push(() => {
+ return (tree: Root, _file) => {
+ findAndReplace(tree, commentRegex, (_value: string, ..._capture: string[]) => {
+ return {
+ type: 'text',
+ value: ''
+ }
+ })
+ }
+ })
+ }
if (opts.callouts) {
plugins.push(() => {
--
Gitblit v1.10.0