From da1e11e2c53b8d2267056cd06cbf709b8bea7965 Mon Sep 17 00:00:00 2001 From: John Bowdre Date: Mon, 26 Feb 2024 22:57:24 -0600 Subject: [PATCH] initial rework on building a gemini capsule --- .gitignore | 2 +- config/_default/hugo.toml | 16 +++++++++++++-- content/404.md | 1 + content/about.md | 5 ++--- flake.nix | 1 + layouts/_default/index.gmi | 7 +++++++ layouts/_default/single.gmi | 41 +++++++++++++++++++++++++++++++++++++ 7 files changed, 67 insertions(+), 6 deletions(-) create mode 100644 layouts/_default/index.gmi create mode 100644 layouts/_default/single.gmi diff --git a/.gitignore b/.gitignore index b6408e1..5d739f1 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,4 @@ /resources/ /.env /.direnv/ - +/.certificates/ diff --git a/config/_default/hugo.toml b/config/_default/hugo.toml index f7f30ab..68b8f4a 100644 --- a/config/_default/hugo.toml +++ b/config/_default/hugo.toml @@ -7,20 +7,32 @@ languageCode = "en" DefaultContentLanguage = "en" enableInlineShortcodes = true +# define gemini media type +[mediaTypes] + [mediaTypes.'text/gemini'] + suffixes = ["gmi"] + # Automatically add content sections to main menu # sectionPagesMenu = "main" [outputs] - home = ['html', 'rss'] + home = ['html', 'rss', 'gemini'] section = ['html'] - taxonomy = ['html',] + taxonomy = ['html'] term = ['html', 'rss'] + page = ['html', 'rss', 'gemini'] # rename rss output from index.xml to feed.xml [outputFormats] [outputFormats.rss] mediatype = "application/rss" baseName = "feed" + [outputFormats.gemini] + mediatype = "text/gemini" + isPlainText = true + isHTML = false + protocol = "gemini://" + permalinkable = true [permalinks] posts = ":filename" diff --git a/content/404.md b/content/404.md index 03637e1..2b42a62 100644 --- a/content/404.md +++ b/content/404.md @@ -7,6 +7,7 @@ kudos = false +++ We're not sure what you were looking for but it's not here. + ![Animated GIF from the movie "The Naked Gun". A man in the foreground proclaims "Please disperse. Nothing to see here." while a building explodes in the background.](/images/nothing-to-see-here.gif) Maybe head back [home](/)? diff --git a/content/about.md b/content/about.md index b6505ce..76f2acb 100644 --- a/content/about.md +++ b/content/about.md @@ -5,6 +5,7 @@ timeless = true comments = false aliases = ["tldr", "bio"] +++ + ![Me, +/- a few decades](/images/john.jpg) You've (somehow) managed to stumble upon my dark corner of the internet[^1]. @@ -36,7 +37,5 @@ Connect with me via: - [XMPP](https://conversations.im/i/jbowdre@omg.lol?omemo-sid-1374125881=a620f3c57733601a6646f6f13a71c86fc9be8dd4126fd158ef3e0a26beb0b434) - [Electronic Mail](mailto:jbowdre@omg.lol) - [PGP: 613F B70C 4FA7 A077](https://l.runtimeterror.dev/pgp) - - [^1]: Congrats? And also, *thank you.* -[^2]: A bit. I'm still in the "fake it until you make" it phase of adulthood. \ No newline at end of file +[^2]: A bit. I'm still in the "fake it until you make" it phase of adulthood. diff --git a/flake.nix b/flake.nix index 2ebfeec..2f3f05d 100644 --- a/flake.nix +++ b/flake.nix @@ -12,6 +12,7 @@ { devShells.x86_64-linux.default = pkgs.mkShell { packages = with pkgs; [ + agate go hugo nodePackages.npm diff --git a/layouts/_default/index.gmi b/layouts/_default/index.gmi new file mode 100644 index 0000000..a3bea3d --- /dev/null +++ b/layouts/_default/index.gmi @@ -0,0 +1,7 @@ +## [runtimeterror $] +{{ $pages := .Pages -}} +{{ $pages = where site.RegularPages "Type" "in" site.Params.mainSections -}} + +{{ range $pages }} +=> {{ .RelPermalink }} [{{ .Date.Format "2006-01-02" }}] {{ .Title }} +{{- end }} diff --git a/layouts/_default/single.gmi b/layouts/_default/single.gmi new file mode 100644 index 0000000..698f39f --- /dev/null +++ b/layouts/_default/single.gmi @@ -0,0 +1,41 @@ +=> / 🏡 [runtimeterror $] + +# {{ .Title }}{{ $scratch := newScratch }} +{{ $content := .RawContent -}} +{{ $content := $content | replaceRE `#### ` "### " -}} +{{ $content := $content | replaceRE `\n- (.+?)` "\n* $1" -}} +{{ $content := $content | replaceRE `\n(\d+). (.+?)` "\n* $2" -}} +{{ $content := $content | replaceRE `\[\^(.+?)\]:.*\n?\n` "" -}} +{{ $content := $content | replaceRE `\[\^(.+?)\]` "" -}} +{{ $content := $content | replaceRE `
` "\n" -}} +{{ $content := $content | replaceRE `\{\{%\s\/?notice.*%\}\}` "***" -}} +{{ $content := $content | replaceRE `((\/\/)|#)\s*torchlight!.*` "" -}} +{{ $content := $content | replaceRE `` "" -}} +{{ $content := $content | replaceRE `\/\/\s*\[tl!.*\]` "" -}} +{{ $content := $content | replaceRE `#\s*\[tl!.*\]` "" -}} +{{ $content := $content | replaceRE `(.+?)` "[$2]($1)" -}} +{{ $content := $content | replaceRE `\sgemini://(\S*)` " [gemini://$1](gemini://$1)" -}} +{{/* $content := $content | replaceRE "([^`])<.*?>([^`])" "$1$2" -*/}} +{{ $content := $content | replaceRE `\n?\n!\[.*\]\((.+?) \"(.+?)\"\)` "\n\n=> $1 Image: $2" -}} +{{ $content := $content | replaceRE `\n?\n!\[.*\]\((.+?)\)` "\n\n=> $1 Embedded Image: $1" -}} +{{ $links := findRE `\n=> ` $content }}{{ $scratch.Set "ref" (add (len $links) 1) }} +{{ $refs := findRE `\[.+?\]\(.+?\)` $content }} +{{ $scratch.Set "content" $content }}{{ range $refs }}{{ $ref := $scratch.Get "ref" }}{{ $contentInLoop := $scratch.Get "content" }}{{ $url := (printf "%s #%d" . $ref) }}{{ $contentInLoop := replace $contentInLoop . $url -}}{{ $scratch.Set "content" $contentInLoop }}{{ $scratch.Set "ref" (add $ref 1) }}{{ end }}{{ $content := $scratch.Get "content" | replaceRE `\[(.+?)\]\((.+?)\) #(\d+)` "$1 [$3]" -}} +{{ $content | safeHTML }} + +--- +Written by John Bowdre {{ if .Params.Date }} on {{ .Lastmod.Format "2006-01-02" }}.{{ end}} + +## Links +{{ $scratch.Set "ref" (add (len $links) 1) }}{{ range $refs }}{{ $ref := $scratch.Get "ref" }}{{ $url := (printf "%s #%d" . $ref) }} +=> {{ $url | replaceRE `\[(.+?)\]\((.+?)\) #(\d+)` "$2 [$3] $1 ($2)" -}} +{{ $scratch.Set "ref" (add $ref 1) }}{{ end}} +{{ $related := first 3 (where (where .Site.RegularPages.ByDate.Reverse ".Params.tags" "intersect" .Params.tags) "Permalink" "!=" .Permalink) }} +{{ if $related }} +## Related articles +{{ range $related }} +=> {{ replace .RelPermalink "/gemini" "" 1}} {{ .Title }}{{ end }}{{ end }} +--- + +=> / Back to the Index +=> https://runtimeterror.dev{{ replace (replace .RelPermalink "/gemini" "" 1) "index.gmi" "" }} View this article on the WWW \ No newline at end of file