TL;DR
Clojure で HTML を記述するためのライブラリ。Clojure のベクタをそのまま HTML に変換する。
仕組み
HTML の要素をベクタで、要素の属性をマップで表す。ベクタの最初の要素が要素名になる。2 番目の要素がマップなら、それが属性になる。残りの要素はすべて、その要素の中身になる。
例
(str (h/html [:ul
(for [x (range 1 4)]
[:li x])]))公式の README では、属性を付けた例を紹介している。
user=> (require '[hiccup2.core :as h])
user=> (str (h/html [:span {:class "foo"} "bar"]))
"<span class=\"foo\">bar</span>"README によると、id と class は CSS のような省略記法でも書ける。# の後ろが id に、. の後ろが class になる。
[:div#foo.bar.baz "bang"]
;; => <div id="foo" class="bar baz">bang</div>注意点
README によると、Hiccup 2 では文字列が自動でエスケープされ、html マクロの戻り値は RawString になる。エスケープせずに出力したい文字列は hiccup2.core/raw で囲む。Hiccup 1 は標準ではエスケープしないので、README はユーザのデータを扱うアプリケーションでは Hiccup 2 を使うよう勧めている。