53 lines
1.5 KiB
Clojure
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)]))
|