diff options
| author | Jake Zerrer <him@jakezerrer.com> | 2025-08-12 14:29:25 -0400 |
|---|---|---|
| committer | Jake Zerrer <him@jakezerrer.com> | 2025-08-12 14:29:25 -0400 |
| commit | 71a4c2823a41febd0778c7170eb3b12b293b4f49 (patch) | |
| tree | e1800b6fca9cfe122221a7a490e580118c818769 | |
| parent | e7583ac9782b006139188ebe6a3c2d33b980bf33 (diff) | |
Add code block support
| -rw-r--r-- | src/highlight.clj | 20 | ||||
| -rw-r--r-- | src/pages.clj | 21 |
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]]) |
