feat(ofm): parsing all type of arrow (#797)
* feat(ofm): parsing all type of arrow Signed-off-by: Aaron <29749331+aarnphm@users.noreply.github.com> * fix: use html value instead of decimal Signed-off-by: Aaron <29749331+aarnphm@users.noreply.github.com> * fix: skip parsing arrow if it is not a valid supported mapping 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
dbbc672c67
commit
5b90fbd0d0
@ -74,6 +74,17 @@ const calloutMapping = {
|
|||||||
cite: "quote",
|
cite: "quote",
|
||||||
} as const
|
} as const
|
||||||
|
|
||||||
|
const arrowMapping: Record<string, string> = {
|
||||||
|
"->": "→",
|
||||||
|
"-->": "⇒",
|
||||||
|
"=>": "⇒",
|
||||||
|
"==>": "⇒",
|
||||||
|
"<-": "←",
|
||||||
|
"<--": "⇐",
|
||||||
|
"<=": "⇐",
|
||||||
|
"<==": "⇐",
|
||||||
|
}
|
||||||
|
|
||||||
function canonicalizeCallout(calloutName: string): keyof typeof calloutMapping {
|
function canonicalizeCallout(calloutName: string): keyof typeof calloutMapping {
|
||||||
const normalizedCallout = calloutName.toLowerCase() as keyof typeof calloutMapping
|
const normalizedCallout = calloutName.toLowerCase() as keyof typeof calloutMapping
|
||||||
// if callout is not recognized, make it a custom one
|
// if callout is not recognized, make it a custom one
|
||||||
@ -82,7 +93,7 @@ function canonicalizeCallout(calloutName: string): keyof typeof calloutMapping {
|
|||||||
|
|
||||||
export const externalLinkRegex = /^https?:\/\//i
|
export const externalLinkRegex = /^https?:\/\//i
|
||||||
|
|
||||||
export const arrowRegex = new RegExp(/-{1,2}>/, "g")
|
export const arrowRegex = new RegExp(/(-{1,2}>|={1,2}>|<-{1,2}|<={1,2})/, "g")
|
||||||
|
|
||||||
// !? -> optional embedding
|
// !? -> optional embedding
|
||||||
// \[\[ -> open brace
|
// \[\[ -> open brace
|
||||||
@ -271,10 +282,12 @@ export const ObsidianFlavoredMarkdown: QuartzTransformerPlugin<Partial<Options>
|
|||||||
if (opts.parseArrows) {
|
if (opts.parseArrows) {
|
||||||
replacements.push([
|
replacements.push([
|
||||||
arrowRegex,
|
arrowRegex,
|
||||||
(_value: string, ..._capture: string[]) => {
|
(value: string, ..._capture: string[]) => {
|
||||||
|
const maybeArrow = arrowMapping[value]
|
||||||
|
if (maybeArrow === undefined) return SKIP
|
||||||
return {
|
return {
|
||||||
type: "html",
|
type: "html",
|
||||||
value: `<span>→</span>`,
|
value: `<span>${maybeArrow}</span>`,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
])
|
])
|
||||||
|
Loading…
Reference in New Issue
Block a user