summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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]])