From 4f0a41cd22ee5c44f750a974b7203f6f33e4e5609b317ca43941666f66b8fade Mon Sep 17 00:00:00 2001 From: Nicholas Johnson Date: Thu, 16 Mar 2023 00:00:00 +0000 Subject: Fix link parsing in single Gemini pages Gemini pages would forget about links coming before preformatted text, causing improper link indexing and missing links. --- layouts/_default/single.gmi | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/layouts/_default/single.gmi b/layouts/_default/single.gmi index d164f8e..df0ff26 100644 --- a/layouts/_default/single.gmi +++ b/layouts/_default/single.gmi @@ -10,6 +10,7 @@ {{ $content := .RawContent }} {{- $scratch := newScratch }} {{- $chunks := findRE `(?sm)(?:(.*?)(^\x60{3}[^\x60].*?^\x60{3}$))|(.*$)` $content }} +{{- $ref_index := 0 }} {{- range $chunks }} {{- $before_pre := replaceRE `(?sm)(?:(.*?)(^\x60{3}[^\x60].*?^\x60{3}$))|(.*$)` "$1" . 1 }} @@ -18,13 +19,13 @@ {{- $rendered_text := print $before_pre $after_pre }} - {{- $scratch.Set "refs" (findRE `\[.+?\]\(.+?\)` $rendered_text) }} - {{- $refs := $scratch.Get "refs" }} + {{- $chunk_refs := findRE `\[.+?\]\(.+?\)` $rendered_text }} + {{- $scratch.Add "refs" $chunk_refs }} {{- if ($.Page.Params.makerefs | default true) }} - {{- range $ref_index, $ref_val := $refs }} - {{- $ref_num := add $ref_index 1 }} - {{- $ref_text := replaceRE `\[(.+?)\]\((.+?)\)` "$1" $ref_val 1 }} - {{- $rendered_text = replace $rendered_text $ref_val (print $ref_text "[" $ref_num "]") 1 }} + {{- range $chunk_refs }} + {{- $ref_index = add $ref_index 1 }} + {{- $ref_text := replaceRE `\[(.+?)\]\((.+?)\)` "$1" . 1 }} + {{- $rendered_text = replace $rendered_text . (print $ref_text "[" $ref_index "]") 1 }} {{- end }} {{- else }} {{- $rendered_text = $rendered_text | replaceRE `(?m)^\[(.+?)\]\((.+?)\)$` (print "=> $2 " $emoji "$1") }} @@ -47,13 +48,14 @@ {{- $refs := $scratch.Get "refs" }} {{- if and (.Page.Params.makerefs | default true) $refs }} +{{- $ref_index := 0 }} ## Links - {{- range $ref_index, $ref_val := $refs }} - {{- $ref_num := add $ref_index 1 }} - {{- $ref_text := replaceRE `\[(.+?)\]\((.+?)\)` "$1" $ref_val 1 }} - {{- $ref_link := replaceRE `\[(.+?)\]\((.+?)\)` "$2" $ref_val 1 }} -{{ print "=> " $ref_link (emojify " :link: ") $ref_num ": " $ref_text | safeHTML }} + {{- range $refs }} + {{- $ref_index = add $ref_index 1 }} + {{- $ref_text := replaceRE `\[(.+?)\]\((.+?)\)` "$1" . 1 }} + {{- $ref_link := replaceRE `\[(.+?)\]\((.+?)\)` "$2" . 1 }} +{{ print "=> " $ref_link (emojify " :link: ") $ref_index ": " $ref_text | safeHTML }} {{- end }} {{- end }} {{- end }} -- cgit v1.2.3