From 211f95c5277be05b0f1768d36ad8d9129241e663 Mon Sep 17 00:00:00 2001 From: Jacky Zhao Date: Sat, 27 Jan 2024 22:49:57 -0800 Subject: [PATCH] fix: allow alt to be defined in wikilinks alongside dims --- quartz/plugins/transformers/ofm.ts | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/quartz/plugins/transformers/ofm.ts b/quartz/plugins/transformers/ofm.ts index 735d114..7c9b33b 100644 --- a/quartz/plugins/transformers/ofm.ts +++ b/quartz/plugins/transformers/ofm.ts @@ -116,13 +116,13 @@ 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) -// (#[^\[\]\|\#]+)? -> # then one or more non-special characters (heading link) -// (|[^\[\]\|\#]+)? -> | then one or more non-special characters (alias) +// !? -> optional embedding +// \[\[ -> open brace +// ([^\[\]\|\#]+) -> 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) export const wikilinkRegex = new RegExp( - /!?\[\[([^\[\]\|\#]+)?(#+[^\[\]\|\#]+)?(\|[^\[\]\|\#]+)?\]\]/, + /!?\[\[([^\[\]\|\#]+)?(#+[^\[\]\|\#]+)?(\|[^\[\]\#]+)?\]\]/, "g", ) const highlightRegex = new RegExp(/==([^=]+)==/, "g") @@ -222,7 +222,15 @@ export const ObsidianFlavoredMarkdown: QuartzTransformerPlugin const ext: string = path.extname(fp).toLowerCase() const url = slugifyFilePath(fp as FilePath) if ([".png", ".jpg", ".jpeg", ".gif", ".bmp", ".svg", ".webp"].includes(ext)) { - const dims = alias ?? "" + // either |alt|dims or |dims + let [alt, dims] = (alias ?? "").split("|") + + // |dims case, treat first alt slot as dims + if (dims === undefined) { + dims = alt + alt = "" + } + let [width, height] = dims.split("x", 2) width ||= "auto" height ||= "auto" @@ -233,6 +241,7 @@ export const ObsidianFlavoredMarkdown: QuartzTransformerPlugin hProperties: { width, height, + alt, }, }, }