feat(ofm): add options to parse arrows (#713)
* feat(ofm): add options to parse arrows Signed-off-by: Aaron <29749331+aarnphm@users.noreply.github.com> * feat(ofm): add options to parse arrows Signed-off-by: Aaron <29749331+aarnphm@users.noreply.github.com> --------- Signed-off-by: Aaron <29749331+aarnphm@users.noreply.github.com>
This commit is contained in:
		| @@ -25,6 +25,7 @@ Finally, Quartz also provides `Plugin.CrawlLinks` which allows you to customize | |||||||
|     - `callouts`: whether to enable [[callouts]]. Defaults to `true` |     - `callouts`: whether to enable [[callouts]]. Defaults to `true` | ||||||
|     - `mermaid`: whether to enable [[Mermaid diagrams]]. 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` |     - `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` |     - `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` |     - `enableYouTubeEmbed`: whether to enable embedded YouTube videos using external image Markdown syntax. Defaults to `false` | ||||||
| - Link resolution behaviour: | - Link resolution behaviour: | ||||||
|   | |||||||
| @@ -23,6 +23,7 @@ export interface Options { | |||||||
|   callouts: boolean |   callouts: boolean | ||||||
|   mermaid: boolean |   mermaid: boolean | ||||||
|   parseTags: boolean |   parseTags: boolean | ||||||
|  |   parseArrows: boolean | ||||||
|   parseBlockReferences: boolean |   parseBlockReferences: boolean | ||||||
|   enableInHtmlEmbed: boolean |   enableInHtmlEmbed: boolean | ||||||
|   enableYouTubeEmbed: boolean |   enableYouTubeEmbed: boolean | ||||||
| @@ -36,6 +37,7 @@ const defaultOptions: Options = { | |||||||
|   callouts: true, |   callouts: true, | ||||||
|   mermaid: true, |   mermaid: true, | ||||||
|   parseTags: true, |   parseTags: true, | ||||||
|  |   parseArrows: true, | ||||||
|   parseBlockReferences: true, |   parseBlockReferences: true, | ||||||
|   enableInHtmlEmbed: false, |   enableInHtmlEmbed: false, | ||||||
|   enableYouTubeEmbed: true, |   enableYouTubeEmbed: true, | ||||||
| @@ -111,6 +113,8 @@ function canonicalizeCallout(calloutName: string): keyof typeof callouts { | |||||||
|  |  | ||||||
| export const externalLinkRegex = /^https?:\/\//i | export const externalLinkRegex = /^https?:\/\//i | ||||||
|  |  | ||||||
|  | export const arrowRegex = new RegExp(/-{1,2}>/, "g") | ||||||
|  |  | ||||||
| // !?               -> optional embedding | // !?               -> optional embedding | ||||||
| // \[\[             -> open brace | // \[\[             -> open brace | ||||||
| // ([^\[\]\|\#]+)   -> one or more non-special characters ([,],|, or #) (name) | // ([^\[\]\|\#]+)   -> one or more non-special characters ([,],|, or #) (name) | ||||||
| @@ -294,6 +298,18 @@ export const ObsidianFlavoredMarkdown: QuartzTransformerPlugin<Partial<Options> | |||||||
|             ]) |             ]) | ||||||
|           } |           } | ||||||
|  |  | ||||||
|  |           if (opts.parseArrows) { | ||||||
|  |             replacements.push([ | ||||||
|  |               arrowRegex, | ||||||
|  |               (_value: string, ..._capture: string[]) => { | ||||||
|  |                 return { | ||||||
|  |                   type: "html", | ||||||
|  |                   value: `<span>→</span>`, | ||||||
|  |                 } | ||||||
|  |               }, | ||||||
|  |             ]) | ||||||
|  |           } | ||||||
|  |  | ||||||
|           if (opts.parseTags) { |           if (opts.parseTags) { | ||||||
|             replacements.push([ |             replacements.push([ | ||||||
|               tagRegex, |               tagRegex, | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user