Start work on HTML generation
This commit is contained in:
@@ -1,6 +1,4 @@
|
|||||||
# doclet
|
This doclet generates the play-clj doc site.
|
||||||
|
|
||||||
This doclet generates the edn file used by the play-clj documentation.
|
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
(defproject play-clj-doclet "0.0.1-SNAPSHOT"
|
(defproject play-clj-doclet "0.0.1-SNAPSHOT"
|
||||||
:description "FIXME: write description"
|
:description "FIXME: write description"
|
||||||
:dependencies [[org.clojure/clojure "1.6.0"]]
|
:dependencies [[org.clojure/clojure "1.6.0"]
|
||||||
|
[hiccup "1.0.5"]]
|
||||||
:source-paths ["src/clojure"]
|
:source-paths ["src/clojure"]
|
||||||
:java-source-paths ["src/java"]
|
:java-source-paths ["src/java"]
|
||||||
:javac-options ["-target" "1.6" "-source" "1.6" "-Xlint:-options"]
|
:javac-options ["-target" "1.6" "-source" "1.6" "-Xlint:-options"]
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
(ns play-clj-doclet.core
|
(ns play-clj-doclet.core
|
||||||
(:require [clojure.edn :as edn]
|
(:require [clojure.edn :as edn]
|
||||||
[clojure.string :as string]
|
[clojure.string :as string]
|
||||||
[clojure.java.io :as io])
|
[clojure.java.io :as io]
|
||||||
|
[play-clj-doclet.html :as html])
|
||||||
(:import [com.sun.javadoc ClassDoc ConstructorDoc Doc ExecutableMemberDoc
|
(:import [com.sun.javadoc ClassDoc ConstructorDoc Doc ExecutableMemberDoc
|
||||||
Parameter RootDoc]))
|
Parameter RootDoc]))
|
||||||
|
|
||||||
@@ -33,7 +34,7 @@
|
|||||||
(->> d .parameters (map parse-param) vec))])
|
(->> d .parameters (map parse-param) vec))])
|
||||||
|
|
||||||
(defn parse-class-entry
|
(defn parse-class-entry
|
||||||
[^ClassDoc c [clj-name type]]
|
[^ClassDoc c type]
|
||||||
(some->> (case type
|
(some->> (case type
|
||||||
:methods (filter #(-> % .isStatic not) (.methods c))
|
:methods (filter #(-> % .isStatic not) (.methods c))
|
||||||
:static-methods (filter #(.isStatic %) (.methods c))
|
:static-methods (filter #(.isStatic %) (.methods c))
|
||||||
@@ -47,21 +48,24 @@
|
|||||||
(map parse-doc)
|
(map parse-doc)
|
||||||
(concat (when-let [sc (.superclass c)]
|
(concat (when-let [sc (.superclass c)]
|
||||||
(when (not= (.typeName sc) "Object")
|
(when (not= (.typeName sc) "Object")
|
||||||
(parse-class-entry sc [clj-name type]))))
|
(parse-class-entry sc type))))
|
||||||
vec
|
vec))
|
||||||
(vector clj-name)))
|
|
||||||
|
|
||||||
(defn parse-class
|
(defn parse-class
|
||||||
[^ClassDoc c]
|
[^ClassDoc c]
|
||||||
(some->> (get targets (.typeName c))
|
(some->> (get targets (.typeName c))
|
||||||
(map #(parse-class-entry c %))
|
(map #(vector (first %) (parse-class-entry c (second %))))
|
||||||
(into {})))
|
(into {})))
|
||||||
|
|
||||||
|
(defn save
|
||||||
|
[doc-map]
|
||||||
|
(->> doc-map pr-str (spit (io/file "uberdoc.edn")))
|
||||||
|
(->> doc-map html/create-html (spit (io/file "uberdoc.html"))))
|
||||||
|
|
||||||
(defn parse
|
(defn parse
|
||||||
[^RootDoc root]
|
[^RootDoc root]
|
||||||
(->> (map parse-class (.classes root))
|
(->> (map parse-class (.classes root))
|
||||||
(filter some?)
|
(filter some?)
|
||||||
(into {})
|
(into {})
|
||||||
pr-str
|
save)
|
||||||
(spit (io/file "java.edn")))
|
(println "Created uberdoc.html and uberdoc.edn."))
|
||||||
(println "Created edn file."))
|
|
||||||
|
|||||||
18
doclet/src/clojure/play_clj_doclet/html.clj
Normal file
18
doclet/src/clojure/play_clj_doclet/html.clj
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
(ns play-clj-doclet.html
|
||||||
|
(:require [hiccup.core :refer :all]))
|
||||||
|
|
||||||
|
(defn create-item
|
||||||
|
[[name text params]]
|
||||||
|
[:div
|
||||||
|
[:h3 (str name)]
|
||||||
|
[:i text]])
|
||||||
|
|
||||||
|
(defn create-section
|
||||||
|
[[clj-name items]]
|
||||||
|
[:div
|
||||||
|
[:h2 {} clj-name]
|
||||||
|
(map create-item items)])
|
||||||
|
|
||||||
|
(defn create-html
|
||||||
|
[doc-map]
|
||||||
|
(html (map create-section doc-map)))
|
||||||
Reference in New Issue
Block a user