diff --git a/doclet/src/clojure/play_clj_doclet/core.clj b/doclet/src/clojure/play_clj_doclet/core.clj index 18966d1..0358d0a 100644 --- a/doclet/src/clojure/play_clj_doclet/core.clj +++ b/doclet/src/clojure/play_clj_doclet/core.clj @@ -90,13 +90,15 @@ [groups] (for [{:keys [name] :as group} groups] (when (and name (not (.endsWith name "*"))) - (->> (some #(if (= (:name %) (str name "*")) %) groups) + (->> groups + (some #(if (= (:name %) (str name "*")) %)) :raw (assoc group :raw*))))) (defn process-groups [{:keys [groups] :as parsed-file} doc-map] - (->> (map #(process-group % doc-map) groups) + (->> groups + (map #(process-group % doc-map)) merge-groups (remove nil?) (assoc parsed-file :groups))) diff --git a/doclet/src/clojure/play_clj_doclet/html.clj b/doclet/src/clojure/play_clj_doclet/html.clj index 4421d9e..fd46bb0 100644 --- a/doclet/src/clojure/play_clj_doclet/html.clj +++ b/doclet/src/clojure/play_clj_doclet/html.clj @@ -2,6 +2,15 @@ (: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 param [[type-name param-name]] (html [:span {} @@ -11,27 +20,30 @@ (defn item [{:keys [name text type args]}] - [:div - [:p - [:b (str name)] - " " + [:div {:class "item"} + [:span {:class "item-name"} + (str name)] + [:span {:class "item-args"} (string/join ", " (map param args))] - (when text [:i text])]) + (when text + [:div {:class "item-doc"} text])]) -(defn create-from-file - [{:keys [ns groups] :as parsed-file}] - [:div - (when ns [:h1 ns]) - (for [group groups] - [:div - [:h2 {} (:name group)] - (:docstring group) - (for [[name items] (:java group)] - [:div - (when (not= (:name group) name) - [:h3 name]) - (map item items)])])]) +(defn content + [parsed-files] + [:div {:class "content"} + (for [{:keys [ns groups] :as pf} parsed-files] + (for [{:keys [name docstring java] :as g} groups] + (concat [[:div {:class "header"} name] + [:div {:class "doc"} docstring]] + (for [[item-name items] java] + (cons (when (not= name item-name) + [:div {:class "sub-header"} item-name]) + (map item items))))))]) (defn create [parsed-files] - (html (map create-from-file parsed-files))) + (html [:head + [:link {:rel "stylesheet" :type "text/css" :href "style.css"}]] + [:body + (sidebar parsed-files) + (content parsed-files)]))