From dd14f02c0ecab82b6643edd1751d2913533e6a82e89a33286774c0f56950e169 Mon Sep 17 00:00:00 2001
From: Nicholas Johnson <nick@nicholasjohnson.ch>
Date: Fri, 24 Feb 2023 00:00:00 +0000
Subject: Implement taxonomy Atom feeds

---
 layouts/_default/taxonomy.atom.xml        | 22 ++++++++++++++++++++++
 layouts/_default/taxonomy.gemini_atom.xml | 21 +++++++++++++++++++++
 layouts/_default/taxonomy.gmi             | 10 +++++++---
 layouts/_default/taxonomy.html            |  5 ++++-
 4 files changed, 54 insertions(+), 4 deletions(-)
 create mode 100644 layouts/_default/taxonomy.atom.xml
 create mode 100644 layouts/_default/taxonomy.gemini_atom.xml

(limited to 'layouts')

diff --git a/layouts/_default/taxonomy.atom.xml b/layouts/_default/taxonomy.atom.xml
new file mode 100644
index 0000000..c0c9f6e
--- /dev/null
+++ b/layouts/_default/taxonomy.atom.xml
@@ -0,0 +1,22 @@
+{{ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" | safeHTML }}
+<feed xmlns="http://www.w3.org/2005/Atom">
+    <id>{{ .Permalink }}</id>
+    <title>{{ .Site.Title }}</title>
+    <updated>{{ .Date.Format "2006-01-02T15:04:05Z" | safeHTML }}</updated>
+    <link href="{{ .Permalink }}atom.xml" rel="self" />
+    <link href="{{ .Permalink }}" rel="alternate" />
+    <author>
+        <name>{{ .Site.Author.name }}</name>
+        <email>{{ .Site.Author.email }}</email>
+    </author>
+    <generator>Hugo -- gohugo.io</generator>
+    <rights type="html">{{ replace .Site.Copyright "{currentYear}" (now.Format "2006") }}</rights>
+    <subtitle>{{ .Site.Params.Description }}</subtitle>{{ range first .Site.Config.Services.RSS.Limit .Data.Pages }}
+    <entry>
+        <id>{{ .Permalink }}</id>
+        <title type="html">{{ .Title }}</title>
+        <updated>{{ .Date.Format "2006-01-02T15:04:05Z" | safeHTML }}</updated>
+        <link href="{{ .Permalink }}" />
+        <content type="html">{{ .Content | html }}</content>
+    </entry>{{ end }}
+</feed>
diff --git a/layouts/_default/taxonomy.gemini_atom.xml b/layouts/_default/taxonomy.gemini_atom.xml
new file mode 100644
index 0000000..85ff034
--- /dev/null
+++ b/layouts/_default/taxonomy.gemini_atom.xml
@@ -0,0 +1,21 @@
+{{ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" | safeHTML }}
+<feed xmlns="http://www.w3.org/2005/Atom">
+    <id>{{ replace .Permalink "https://" "gemini://" }}</id>
+    <title>{{ .Site.Title }}</title>
+    <updated>{{ .Date.Format "2006-01-02T15:04:05Z" | safeHTML }}</updated>
+    <link href="{{ replace .Permalink "https://" "gemini://" | safeURL }}atom.xml" rel="self" />
+    <link href="{{ replace .Permalink "https://" "gemini://" | safeURL }}" rel="alternate" />
+    <author>
+        <name>{{ .Site.Author.name }}</name>
+        <email>{{ .Site.Author.email }}</email>
+    </author>
+    <generator>Hugo -- gohugo.io</generator>
+    <rights type="html">{{ replace .Site.Copyright "{currentYear}" (now.Format "2006") }}</rights>
+    <subtitle>{{ .Site.Params.Description }}</subtitle>{{ range first .Site.Config.Services.RSS.Limit .Data.Pages }}
+    <entry>
+        <id>{{ replace .Permalink "https://" "gemini://" | safeURL }}</id>
+        <title>{{ .Title }}</title>
+        <updated>{{ .Date.Format "2006-01-02T15:04:05Z" | safeHTML }}</updated>
+        <link href="{{ replace .Permalink "https://" "gemini://" | safeURL }}" rel="alternate" />
+    </entry>{{ end }}
+</feed>
diff --git a/layouts/_default/taxonomy.gmi b/layouts/_default/taxonomy.gmi
index c68f674..04c3f73 100644
--- a/layouts/_default/taxonomy.gmi
+++ b/layouts/_default/taxonomy.gmi
@@ -2,8 +2,12 @@
 => / {{ emojify ":link:" | safeHTML }} Return to homepage
 
 
-# All {{ .Type }}
-	{{- range .Data.Pages }}
+# {{ .Type | humanize }}
+## Feeds
+=> {{ .RelPermalink | replaceRE `(?m)index.gmi$` "atom.xml" | safeHTML }} {{ emojify ":link:" | safeHTML }} Atom Feed
+
+## List
+{{- range .Data.Pages }}
 => {{ .RelPermalink }} {{ emojify ":link:" | safeHTML }} {{ .Title | safeHTML }}
-	{{- end }}
+{{- end }}
 {{- end }}
diff --git a/layouts/_default/taxonomy.html b/layouts/_default/taxonomy.html
index 566e6da..a3a22a7 100644
--- a/layouts/_default/taxonomy.html
+++ b/layouts/_default/taxonomy.html
@@ -3,7 +3,10 @@
   <p>{{ emojify ":link:" | safeHTML }}&nbsp;<a class="link" href="/" rel="noreferrer">Return to homepage</a></p>
 </nav>
 <main>
-  <h1>All {{ .Type }}</h1>
+  <h1>{{ .Type | humanize }}</h1>
+  <h2>Feeds</h2>
+  <p><a class="link" href="{{ print .RelPermalink "atom.xml" }}" rel="noreferrer"> {{ emojify ":link:" | safeHTML }}&nbsp;Atom Feed</a></p>
+  <h2>List</h2>
   <ul class="list">
   {{- range .Data.Pages }}
     <li class="list__item">{{ emojify ":link:" }}&nbsp;<a class="link" href="{{ .RelPermalink }}" rel="noreferrer">{{ .Title }}</a></li>
-- 
cgit v1.2.3