diff options
| author | Jake Zerrer <him@jakezerrer.com> | 2025-12-04 10:53:09 -0500 |
|---|---|---|
| committer | Jake Zerrer <him@jakezerrer.com> | 2025-12-08 11:21:21 -0500 |
| commit | 70f2c8b0ae6e7913d4349156947f01cfdb83757e (patch) | |
| tree | 8a5e76478fa6b989e47efed3e27b55a773073f99 /home | |
| parent | 29b8b41111d30fe7aea9cb2dfa4c827ef9a79330 (diff) | |
Diffstat (limited to 'home')
| -rw-r--r-- | home/deps.edn | 1 | ||||
| -rw-r--r-- | home/feed.atom | 1 | ||||
| -rw-r--r-- | home/src/components.clj | 4 | ||||
| -rw-r--r-- | home/src/core.clj | 2 | ||||
| -rw-r--r-- | home/src/rss.clj | 45 |
5 files changed, 53 insertions, 0 deletions
diff --git a/home/deps.edn b/home/deps.edn index 5a4bbd0..dec12ad 100644 --- a/home/deps.edn +++ b/home/deps.edn @@ -2,6 +2,7 @@ :deps {org.clojure/clojure {:mvn/version "1.12.0"} io.github.borkdude/html {:mvn/version "0.2.2"} missionary/missionary {:mvn/version "b.46"} + org.clojure/data.xml {:mvn/version "0.0.8"} zprint/zprint {:mvn/version "1.3.0"}} :aliases {:dev {:extra-paths ["dev"] :extra-deps {ring/ring-jetty-adapter {:mvn/version "1.14.1"}}}}} diff --git a/home/feed.atom b/home/feed.atom new file mode 100644 index 0000000..6d77230 --- /dev/null +++ b/home/feed.atom @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8"?><feed xmlns="http://www.w3.org/2005/Atom"><id>https://www.jakezerrer.com</id><title>TITLE</title><updated></updated><author><name>Jake Zerrer</name></author><link rel="self" href="https://www.jakezerrer.com/feed"></link><entry><id>123</id><title>abc</title><updated>now</updated><link rel="alternate" href="hi"></link><summary>moo</summary></entry></feed>
\ No newline at end of file diff --git a/home/src/components.clj b/home/src/components.clj index d4d30a0..b35ee7c 100644 --- a/home/src/components.clj +++ b/home/src/components.clj @@ -7,6 +7,10 @@ [:html {:style {:font-family "monospace"}} [:head + [:link + {:rel "alternate" + :type "application/atom+xml" + :href "https://www.jakezerrer.com/feed.xml"}] [:style [:$ (str diff --git a/home/src/core.clj b/home/src/core.clj index b8ba344..368f491 100644 --- a/home/src/core.clj +++ b/home/src/core.clj @@ -1,5 +1,6 @@ (ns core (:require [clojure.java.io :as io] + [rss :refer [emit]] [pages :refer [pages e-404]])) (defn clean [] @@ -20,6 +21,7 @@ target-file (io/file target-path)] (io/make-parents target-file) (spit target-file (str (page-fn))))) + (spit (io/file "target/html/feed.xml") (emit)) (spit (io/file "404.html") (str (e-404)))) (defn -main [] diff --git a/home/src/rss.clj b/home/src/rss.clj new file mode 100644 index 0000000..6a8072e --- /dev/null +++ b/home/src/rss.clj @@ -0,0 +1,45 @@ +(ns rss + (:require [clojure.data.xml :as xml]) + (:import [java.time ZonedDateTime ZoneId] + [java.time.format DateTimeFormatter])) + +(def title "Jake's Blog") + +(defn fmt [year month day zone] + (.format (ZonedDateTime/of year month day 0 0 0 0 (ZoneId/of zone)) (DateTimeFormatter/ISO_OFFSET_DATE_TIME))) + +(defn entries [] + (sorted-map + [2025 10 8 "America/New_York"] + {:title "Quotes from The Second Sex" + :path "second-sex-quotes" + :summary "My favorite quotes from Simone de Beauvior's \"The Second Sex\""})) + +(defn feed [] + (xml/element + :feed {:xmlns "http://www.w3.org/2005/Atom"} + (xml/element :id {} "https://www.jakezerrer.com/feed.atom") + (xml/element :title {} title) + ;; TODO: Updated + (xml/element :updated {} (apply fmt (first (last (entries))))) + (xml/element + :author + {} + (xml/element :name {} "Jake Zerrer")) + (xml/element :link {:rel "self" :href "https://www.jakezerrer.com/feed.atom"}) + (for [[updated {:keys [title path summary]}] (entries)] + (let [[year month day zone] updated] + (xml/element + :entry + {} + (xml/element :id {} (str "https://www.jakezerrer.com/" path)) + (xml/element :title {} title) + (xml/element :updated {} (fmt year month day zone)) + (xml/element :link {:rel "alternate" :href (str "https://www.jakezerrer.com/" path)}) + (xml/element :summary {} summary)))))) + +(defn emit [] + (xml/emit-str (feed))) + +(comment + (emit)) |
