summaryrefslogtreecommitdiff
path: root/layouts/_default/single.gmi
diff options
context:
space:
mode:
authorNicholas Johnson <>2025-07-26 00:00:00 +0000
committerNicholas Johnson <>2025-07-26 00:00:00 +0000
commit9bb9989fca490bfac69ea4387ccae1e9ec3ec23cf7f47a401e241ee43562f8a3 (patch)
tree887dd23c15ddd56b850a4901b3161808bb37f1b1872fa40cbd2e2de877c3d77d /layouts/_default/single.gmi
parentc1dc7133883e38b6c6ddf110df1868162862159994b2f9454999454f48417e58 (diff)
downloadhugo-theme-journal-9bb9989fca490bfac69ea4387ccae1e9ec3ec23cf7f47a401e241ee43562f8a3.tar.gz
hugo-theme-journal-9bb9989fca490bfac69ea4387ccae1e9ec3ec23cf7f47a401e241ee43562f8a3.zip
Migrate fully to Hugo's new template system
This was the only way I could get term pages to consistently render correctly.
Diffstat (limited to 'layouts/_default/single.gmi')
-rw-r--r--layouts/_default/single.gmi132
1 files changed, 0 insertions, 132 deletions
diff --git a/layouts/_default/single.gmi b/layouts/_default/single.gmi
deleted file mode 100644
index 1502830..0000000
--- a/layouts/_default/single.gmi
+++ /dev/null
@@ -1,132 +0,0 @@
-{{ define "main" -}}
-{{ $emoji := cond (.Page.Params.showlinkemoji | default true) (emojify ":link: ") "" -}}
-=> {{ .Site.Home.RelPermalink | strings.TrimSuffix "index.gmi" }} {{ emojify ":link:" }} {{ i18n "returnHome" -}}
-
-{{ if (.Page.Params.pageinfo | default true) }}
-
-{{ partial "pageinfo.gmi" . -}}
-{{ end }}
-
-
-# {{ .Name }}
-
-{{ $content := chomp (.RawContent) -}}
-{{ $scratch := newScratch -}}
-
-{{/* if content begins with a heading, add an extra newline */ -}}
-{{ if (findRE `^#{1,6} ` $content 1) }}
-{{ end -}}
-
-{{/* split text into chunks, with each chunk containing 3 parts: above, within, and below preformatted text */ -}}
-{{/* the regex matching below the preformatted text matches exactly once in the entire text */ -}}
-{{ $chunks := findRESubmatch `(?sm)(?:(.+?)(^\x60{3}[^\x60].*?^\x60{3}$))|(.+$)` $content -}}
-
-{{ $ref_index := 0 -}}
-
-{{ range $chunks -}}
- {{ $above_pre := index . 1 -}}
- {{ $pre := index . 2 -}}
- {{ $below_pre := index . 3 -}}
-
- {{/* mux regex matches above and below preformatted text for rendering (the matches are mutually exclusive) */ -}}
- {{ $rendered_text := print $above_pre $below_pre -}}
-
- {{ if ($.Page.Params.makerefs | default true) -}}
-
- {{/* find all the links within a chunk */ -}}
- {{ $chunk_refs := findRESubmatch `!?\[[\t ]*(.+?)[\t ]*\]\([\t ]*(.+?)(?:[\t ]+"(.+?)")?[\t ]*\)` $rendered_text -}}
-
- {{ range $chunk_refs -}}
- {{ $ref_index = add $ref_index 1 -}}
- {{ $chunk_ref := dict
- "index" $ref_index
- "text" (index . 1)
- "link" (index . 2)
- "title" (index . 3)
- -}}
-
- {{ $scratch.Add "refs" (slice $chunk_ref) -}}
-
- {{ $ref_index := $chunk_ref.index -}}
- {{ $ref_text := $chunk_ref.text -}}
-
- {{/* create superscript of $ref_index */ -}}
- {{ $superscript_map := dict
- "0" "⁰"
- "1" "¹"
- "2" "²"
- "3" "³"
- "4" "⁴"
- "5" "⁵"
- "6" "⁶"
- "7" "⁷"
- "8" "⁸"
- "9" "⁹"
- -}}
- {{ $ref_superscript := "" -}}
- {{ range (split $ref_index "") -}}
- {{ $ref_superscript = print $ref_superscript (index $superscript_map .) -}}
- {{ end -}}
-
- {{/* replace Markdown links with link text and their superscripted reference numbers */ -}}
- {{ $rendered_text = replace $rendered_text (index . 0) (print $ref_text $ref_superscript) 1 -}}
-
- {{ end -}}
-
- {{ else -}}
-
- {{/* render all links directly */ -}}
- {{ $rendered_text = $rendered_text | replaceRE `(?m)^!?\[[\t ]*(.+?)[\t ]*\]\([\t ]*(.+?)(?:[\t ]+"(.+?)")?[\t ]*\)$` (print "=> $2 " $emoji "$1") -}}
-
- {{ end -}}
-
- {{/* trim extra heading symbols */ -}}
- {{ $rendered_text = $rendered_text | replaceRE `(?m)^####{1,3} ` "### " -}}
-
- {{/* convert Markdown alternative heading syntax to gemtext heading syntax */ -}}
- {{ $rendered_text = $rendered_text | replaceRE `(?m)^[\t ]*(\S.+?)[\t ]*\n\=+$` "# $1" -}}
- {{ $rendered_text = $rendered_text | replaceRE `(?m)^[\t ]*(\S.+?)[\t ]*\n\-+$` "## $1" -}}
-
- {{/* convert Markdown alternative unordered list syntax to gemtext unordered list syntax */ -}}
- {{ $rendered_text = $rendered_text | replaceRE `(?m)^[-+] ` "* " -}}
-
- {{/* convert Markdown ordered list items to gemtext unordered list items */ -}}
- {{ $rendered_text = $rendered_text | replaceRE `(?m)^[1-9]\d*\.[\t ]+(.*?)[\t ]*$` "* $1" -}}
-
- {{/* remove bold and italics asterisk symbols */ -}}
- {{/* note: this operation is performed in 3 steps to handle nested bold and italics */ -}}
- {{/* note: this operation is performed last to avoid incorrectly rendering (un)ordered lists */ -}}
- {{ $rendered_text = $rendered_text | replaceRE `\*{3}(\S(?:.*?\S)?)\*{3}` "$1" -}}
- {{ $rendered_text = $rendered_text | replaceRE `\*{2}(\S(?:.*?\S)?)\*{2}` "$1" -}}
- {{ $rendered_text = $rendered_text | replaceRE `\*{1}(\S(?:.*?\S)?)\*{1}` "$1" -}}
-
- {{ $rendered_text = $rendered_text | emojify -}}
-
- {{/* demux regex matches above and below preformatted text */ -}}
- {{ if $above_pre -}}
- {{ $rendered_text -}}
- {{ $pre -}}
- {{ else -}}
- {{ $pre -}}
- {{ $rendered_text -}}
- {{ end -}}
-
-{{ end -}}
-
-{{ $refs := $scratch.Get "refs" -}}
-{{ if and (.Page.Params.makerefs | default true) $refs }}
-
-
-## {{ i18n "refs" }}
-{{ range $refs -}}
- {{ $ref_index := .index -}}
- {{ $ref_text := .text -}}
- {{ $ref_link := .link -}}
- {{ $ref_title := .title -}}
-
- {{/* render referenced links */}}
-{{ print "=> " $ref_link (emojify " :link: [") $ref_index "]: " (cond (ne (len $ref_title) 0) $ref_title $ref_text) -}}
-{{ end -}}
-
-{{ end -}}
-{{ end }}