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:
parent
c11395e7bc
commit
4d338cec13
@ -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,
|
||||||
|
Loading…
Reference in New Issue
Block a user