summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJake Zerrer <him@jakezerrer.com>2025-08-12 14:29:25 -0400
committerJake Zerrer <him@jakezerrer.com>2025-08-12 14:29:25 -0400
commit71a4c2823a41febd0778c7170eb3b12b293b4f49 (patch)
treee1800b6fca9cfe122221a7a490e580118c818769
parente7583ac9782b006139188ebe6a3c2d33b980bf33 (diff)
Add code block support
-rw-r--r--src/highlight.clj20
-rw-r--r--src/pages.clj21
2 files changed, 39 insertions, 2 deletions
diff --git a/src/highlight.clj b/src/highlight.clj
new file mode 100644
index 0000000..0bd1335
--- /dev/null
+++ b/src/highlight.clj
@@ -0,0 +1,20 @@
+(ns highlight
+ (:require [clojure.java.shell :as shell]
+ [borkdude.html :refer [html]]))
+
+(defn highlight [lang src]
+ (let [result (shell/sh "pygmentize" "-l" lang "-f" "html" :in src)]
+ (:out result)))
+
+(defmacro highlight-clj [& body]
+ `(highlight "clojure" ~(apply str (map pr-str body))))
+
+(defn highlight-styles [style]
+ (let [result (shell/sh "pygmentize" "-S" style "-f" "html" "-a" ".code")]
+ (:out result)))
+
+(defn code [v]
+ (html
+ [:div
+ {:class "code"}
+ [:$ v]]))
diff --git a/src/pages.clj b/src/pages.clj
index 4b9a617..bd9cad2 100644
--- a/src/pages.clj
+++ b/src/pages.clj
@@ -1,14 +1,19 @@
(ns pages
- (:require [borkdude.html :refer [html]]))
+ (:require [borkdude.html :refer [html]]
+ [highlight :refer [code highlight-clj highlight-styles]]))
(def home-uri "/")
(def books-2025-uri "/books-2025")
+(def code-example-uri "/code-example")
(defn template [body]
(html
[:html
{:style {:font-family "monospace"}}
[:head
+ [:style
+ [:$
+ (highlight-styles "default")]]
[:meta {:charset "UTF-8"}]]
[:body
[:<> body]]]))
@@ -46,9 +51,21 @@
[:li "This Life: Secular Faith and Spiritual Freedom (Martin Hägglund)"]
[:li "Mating (Normal Rush)"]]])))
+(defn code-example []
+ (page
+ (html
+ [:<>
+ [:h1 "Code example"]
+ [:p "This is an example of a post with a code block:"]
+ (code
+ (highlight-clj
+ (println "hello, world!")))
+ [:p "Looks pretty good."]])))
+
(defn pages []
{home-uri home
- books-2025-uri books-2025})
+ books-2025-uri books-2025
+ code-example-uri code-example})
(comment
(require '[repl :refer [restart build]])