From 0ddc48a4529a06b48e10e0917c815d99220eebd3 Mon Sep 17 00:00:00 2001 From: Jacky Zhao Date: Tue, 5 Apr 2022 13:47:24 -0700 Subject: [PATCH] fix: wikilink-like text in code fences #95, #97 --- content/notes/CJK + Latex Support (测试).md | 6 -- layouts/partials/textprocessing.html | 65 ++++++++++++--------- 2 files changed, 39 insertions(+), 32 deletions(-) diff --git a/content/notes/CJK + Latex Support (测试).md b/content/notes/CJK + Latex Support (测试).md index 14eb77d..d6e4ae9 100644 --- a/content/notes/CJK + Latex Support (测试).md +++ b/content/notes/CJK + Latex Support (测试).md @@ -38,9 +38,3 @@ $$ ## RTL More information on configuring RTL languages like Arabic in the [config](notes/config.md) page. - -`![[Image.png|modifier+modifier|#]]` - -[[notes/troubleshooting]] - -`[[Image.png|modifier+modifier|#]]` \ No newline at end of file diff --git a/layouts/partials/textprocessing.html b/layouts/partials/textprocessing.html index dfa0b6e..ad76d04 100644 --- a/layouts/partials/textprocessing.html +++ b/layouts/partials/textprocessing.html @@ -1,4 +1,5 @@ {{ $content := .Content }} +{{ $raw := .RawContent }} {{ $page := .Page }} {{/* Escape slashes for Latex to fix line breaks */}} @@ -9,34 +10,46 @@ {{end}} {{/* Wikilinks */}} -{{$wikilinks := $content | findRE "!?\\[\\[\\S[^\\[\\]\\|]*(?:\\|[^\\[\\]]*)?\\S\\]\\]" }} +{{$wikilinks := $raw | findRE "!?\\[\\[\\S[^\\[\\]\\|]*(?:\\|[^\\[\\]]*)?\\S\\]\\]" }} +{{$codefences := $raw | findRE "\\x60[^\\x60\\n]+\\x60"}} +{{$codeblocks := $raw | findRE "\\x60{3}[^\\x60]+\\x60{3}"}} +{{$code := union $codefences $codeblocks}} {{range $wikilinks}} - {{if (hasPrefix . "!")}} - {{$inner := . | strings.TrimPrefix "![[" | strings.TrimSuffix "]]" }} - {{$split := split $inner "|"}} - {{$path := index $split 0}} - {{$reference := split $path "#"}} - {{$title := index $reference 0}} - {{$display := default $title (index $split 1)}} - {{$img := printf "" $path $display}} - {{$content = replace $content . $img}} - {{else}} - {{$inner := . | strings.TrimPrefix "[[" | strings.TrimSuffix "]]" }} - {{$split := split $inner "|"}} - {{$path := index $split 0}} - {{$reference := split $path "#"}} - {{$title := index $reference 0}} - {{$block := default "" (index $reference 1)}} - {{$block = strings.TrimRight "/" (cond (eq $block "") $block (printf "#%s" $block))}} - {{$href := strings.TrimRight "/" ($page.GetPage $title).RelPermalink}} - {{$display := default $title (index $split 1)}} - {{if not $href}} - {{$link := printf "%s" $display}} - {{$content = replace $content . $link}} + {{$cur := .}} + {{$incode := false}} + {{range $code}} + {{if (in . $cur)}} + {{$incode = true}} + {{end}} + {{end}} + {{if not $incode}} + {{if (hasPrefix . "!")}} + {{$inner := . | strings.TrimPrefix "![[" | strings.TrimSuffix "]]" }} + {{$split := split $inner "|"}} + {{$path := index $split 0}} + {{$reference := split $path "#"}} + {{$title := index $reference 0}} + {{$display := default $title (index $split 1)}} + {{$img := printf "" $path $display}} + {{$content = replace $content . $img}} {{else}} - {{$fullhref := printf "%s%s" $href $block }} - {{$link := printf "%s" $fullhref $href $display}} - {{$content = replace $content . $link}} + {{$inner := . | strings.TrimPrefix "[[" | strings.TrimSuffix "]]" }} + {{$split := split $inner "|"}} + {{$path := index $split 0}} + {{$reference := split $path "#"}} + {{$title := index $reference 0}} + {{$block := default "" (index $reference 1)}} + {{$block = strings.TrimRight "/" (cond (eq $block "") $block (printf "#%s" $block))}} + {{$href := strings.TrimRight "/" ($page.GetPage $title).RelPermalink}} + {{$display := default $title (index $split 1)}} + {{if not $href}} + {{$link := printf "%s" $display}} + {{$content = replace $content . $link}} + {{else}} + {{$fullhref := printf "%s%s" $href $block }} + {{$link := printf "%s" $fullhref $href $display}} + {{$content = replace $content . $link}} + {{end}} {{end}} {{end}} {{end}}