(ns play-clj-doclet.html
(:require [clojure.string :as string]
[hiccup.core :refer :all]))
(defn param
[[type-name param-name]]
(html [:span {}
[:span {:class "type-name"} "^" type-name]
" "
param-name]))
(defn item
[{:keys [name text type args]}]
[:div
[:p
[:b (str name)]
" "
(string/join ", " (map param args))]
(cond
text [:i text]
type [:i (str "Returns a " type)])])
(defn create-from-file
[parsed-file]
(for [group (:groups parsed-file)]
[:div
[:h1 {} (:name group)]
(:docstring group)
(for [[name items] (:java group)]
[:div
(when (not= (:name group) name)
[:h3 name])
(map item (sort-by first items))])]))
(defn create
[parsed-files]
(html (map create-from-file parsed-files)))