summaryrefslogtreecommitdiff
path: root/src/mulk/benki/util.clj
blob: 5b2e4840eb7362da33faefba28c1349ffe533143 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
(ns mulk.benki.util
  (:refer-clojure)
  (:use [hiccup core     page-helpers]
        noir.core))


(def fmt clojure.pprint/cl-format)


(defonce #^:private finished-initializations (atom #{}))

(defmacro do-once [key & body]
  `(while (not (@(deref #'finished-initializations) key))
     (let [fininit-copy# @(deref #'finished-initializations)]
       (when (compare-and-set! (deref #'finished-initializations)
                               fininit-copy#
                               (conj fininit-copy# key))
         (do ~@body)))))


;; defpartial is just defn + html.
(defpartial layout [title & content]
  (html5
   [:head [:title title]]
   [:body [:h1 title]
    content]))