Clean up doclet code and export embeddable HTML

This commit is contained in:
oakes
2014-05-19 03:22:18 -04:00
parent aed7e8e57e
commit 8937b8608a
3 changed files with 49 additions and 28 deletions

View File

@@ -5,10 +5,7 @@
(defn str->filename
[ns s]
(-> (or (let [dot-pos (.lastIndexOf ns ".")]
(when-not (= dot-pos -1)
(subs ns (+ 1 dot-pos))))
"core")
(-> (subs ns (+ (.lastIndexOf ns ".") 1))
(str "." s)
(string/replace "?" "_q")
(string/replace "->" "_")
@@ -19,9 +16,8 @@
(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 [[ns groups] parsed-files]
(cons [:div {:class "ns"} ns]
(for [{:keys [name]} groups]
[:div {:class "name"}
[:a {:href (str->filename ns name)}
@@ -64,34 +60,56 @@
(when raw* [:pre raw*])
[:pre raw]]]])
(defn create-file
[parsed-files name content]
(defn create-site-file
[name sidebar content]
(html [:html
[:head
[:title name]
[:link {:rel "stylesheet" :href "highlight.css"}]
[:link {:rel "stylesheet" :href "main.css"}]]
[:body
(sidebar parsed-files)
sidebar
content
[:script {:src "highlight.js"}]
[:script {:src "main.js"}]]]))
(defn create-embed-file
[content]
(html [:html [:body content]]))
(defn copy-from-res
[dir file-name]
(spit (io/file dir file-name)
(-> file-name io/resource slurp)))
(defn create
(defn create-site!
[dir parsed-files]
(.mkdir (io/file dir))
(copy-from-res dir "main.css")
(copy-from-res dir "main.js")
(copy-from-res dir "highlight.css")
(copy-from-res dir "highlight.js")
(doseq [{:keys [ns groups] :as pf} parsed-files]
(doseq [[ns groups] parsed-files]
(doseq [{:keys [name] :as group} groups]
(spit (io/file dir (str->filename ns name))
(create-file parsed-files name (content group)))))
(create-site-file name (sidebar parsed-files) (content group)))))
(spit (io/file dir "index.html")
(create-file parsed-files "play-clj docs" nil)))
(create-site-file "play-clj docs" (sidebar parsed-files) nil)))
(defn create-embed!
[dir parsed-files]
(.mkdir (io/file dir))
(doseq [[ns groups] parsed-files]
(doseq [{:keys [name] :as group} groups]
(spit (io/file dir (str->filename ns name))
(create-embed-file (content group)))))
(spit (io/file dir "index.edn")
(->> parsed-files
(map (fn [[ns groups]]
(for [{:keys [name]} groups]
{:ns ns
:name name
:file (str->filename ns name)})))
(apply concat)
vec
pr-str)))