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` | ||||
|     - `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: | ||||
|   | ||||
| @@ -23,6 +23,7 @@ export interface Options { | ||||
|   callouts: boolean | ||||
|   mermaid: boolean | ||||
|   parseTags: boolean | ||||
|   parseArrows: boolean | ||||
|   parseBlockReferences: boolean | ||||
|   enableInHtmlEmbed: boolean | ||||
|   enableYouTubeEmbed: boolean | ||||
| @@ -36,6 +37,7 @@ const defaultOptions: Options = { | ||||
|   callouts: true, | ||||
|   mermaid: true, | ||||
|   parseTags: true, | ||||
|   parseArrows: true, | ||||
|   parseBlockReferences: true, | ||||
|   enableInHtmlEmbed: false, | ||||
|   enableYouTubeEmbed: true, | ||||
| @@ -111,6 +113,8 @@ function canonicalizeCallout(calloutName: string): keyof typeof callouts { | ||||
|  | ||||
| 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 @@ 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) { | ||||
|             replacements.push([ | ||||
|               tagRegex, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user