Files
play-clj/doclet/src/clojure/play_clj_doclet/html.clj
2014-03-31 23:24:47 -04:00

53 lines
1.5 KiB
Clojure

(ns play-clj-doclet.html
(:require [clojure.string :as string]
[hiccup.core :refer :all]))
(defn sidebar
[parsed-files]
[:div {:class "sidebar"}
(for [{:keys [ns groups] :as pf} parsed-files]
(cons (when (> (count ns) 0)
[:div {:class "ns"} ns])
(for [g groups]
[:div {:class "name"} (:name g)])))])
(defn java-param
[[type-name param-name]]
(html [:span {:class "j-arg"}
[:span {:class "j-type"} "^" type-name]
" "
param-name]))
(defn java-item
[{:keys [name text type args]}]
[:div {:class "j-item"}
[:span {:class "j-name"}
(str name)]
[:span {:class "j-args"}
(string/join ", " (map java-param args))]
(when text
[:div {:class "j-doc"} text])])
(defn content
[parsed-files]
[:div {:class "content"}
(for [{:keys [ns groups] :as pf} parsed-files]
(for [{:keys [name docstring arglists java] :as g} groups]
(list [:div {:class "clj"}
(for [args arglists]
[:div {:class "c-header"} (pr-str args)])
[:div {:class "c-doc"} docstring]]
[:div {:class "java"}
(for [[item-name items] java]
(cons (when (not= name item-name)
[:div {:class "j-header"} item-name])
(map java-item items)))])))])
(defn create
[parsed-files]
(html [:head
[:link {:rel "stylesheet" :type "text/css" :href "style.css"}]]
[:body
(sidebar parsed-files)
(content parsed-files)]))