Improve how options are displayed
This commit is contained in:
@@ -32,10 +32,12 @@
|
|||||||
(.name d)))
|
(.name d)))
|
||||||
|
|
||||||
(defn parse-doc
|
(defn parse-doc
|
||||||
[^Doc d]
|
[^Doc d clj-name]
|
||||||
(merge {}
|
(merge {}
|
||||||
(when-let [n (some-> (parse-doc-name d) camel->keyword)]
|
{:name (->> [(second (string/split clj-name #" "))
|
||||||
{:name n})
|
(some-> (parse-doc-name d) camel->keyword)]
|
||||||
|
(remove nil?)
|
||||||
|
(string/join " "))}
|
||||||
(when (> (count (.commentText d)) 0)
|
(when (> (count (.commentText d)) 0)
|
||||||
{:text (.commentText d)})
|
{:text (.commentText d)})
|
||||||
(when (and (isa? (type d) MethodDoc)
|
(when (and (isa? (type d) MethodDoc)
|
||||||
@@ -48,7 +50,7 @@
|
|||||||
{:args [[(-> d .type .typeName) "value"]]})))
|
{:args [[(-> d .type .typeName) "value"]]})))
|
||||||
|
|
||||||
(defn parse-class-entry
|
(defn parse-class-entry
|
||||||
[^ClassDoc c type]
|
[^ClassDoc c [clj-name 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))
|
||||||
@@ -59,19 +61,20 @@
|
|||||||
:constructors (filter #(-> % .isStatic not) (.constructors c))
|
:constructors (filter #(-> % .isStatic not) (.constructors c))
|
||||||
nil)
|
nil)
|
||||||
(filter #(.isPublic %))
|
(filter #(.isPublic %))
|
||||||
(map parse-doc)
|
(map #(parse-doc % clj-name))
|
||||||
(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 type))))
|
(parse-class-entry sc [clj-name type]))))
|
||||||
|
distinct
|
||||||
(sort-by :name)
|
(sort-by :name)
|
||||||
vec
|
vec))
|
||||||
(hash-map :text (.commentText c) :items)))
|
|
||||||
|
|
||||||
(defn parse-class
|
(defn parse-class
|
||||||
[^ClassDoc c]
|
[^ClassDoc c]
|
||||||
(some->> (get classes (.typeName c))
|
(some->> (get classes (.typeName c))
|
||||||
(map #(vector (first %) (parse-class-entry c (second %))))
|
(map #(vector (first (string/split (first %) #" "))
|
||||||
(into {})))
|
{:text (.commentText c)
|
||||||
|
:items (parse-class-entry c %)}))))
|
||||||
|
|
||||||
(defn remove-destructuring
|
(defn remove-destructuring
|
||||||
[arglist]
|
[arglist]
|
||||||
@@ -86,15 +89,15 @@
|
|||||||
vec))
|
vec))
|
||||||
|
|
||||||
(defn process-group
|
(defn process-group
|
||||||
[{:keys [type raw docstring] :as group} doc-map]
|
[{:keys [type raw docstring] :as group} java-docs]
|
||||||
(let [form (read-string raw)
|
(let [form (read-string raw)
|
||||||
n (second form)]
|
n (second form)]
|
||||||
(when (and (contains? #{'defn 'defmacro} (first form))
|
(when (and (contains? #{'defn 'defmacro} (first form))
|
||||||
(-> n meta :private not))
|
(-> n meta :private not))
|
||||||
(assoc group
|
(assoc group
|
||||||
:name (str n)
|
:name (str n)
|
||||||
:java (->> doc-map
|
:java (->> java-docs
|
||||||
(filter #(.startsWith (first %) (str n)))
|
(filter #(= (first %) (str n)))
|
||||||
(sort-by first)
|
(sort-by first)
|
||||||
vec)
|
vec)
|
||||||
:arglists (arglists form)
|
:arglists (arglists form)
|
||||||
@@ -110,22 +113,22 @@
|
|||||||
(assoc group :raw*)))))
|
(assoc group :raw*)))))
|
||||||
|
|
||||||
(defn process-groups
|
(defn process-groups
|
||||||
[{:keys [groups] :as parsed-file} doc-map]
|
[{:keys [groups] :as parsed-file} java-docs]
|
||||||
(->> groups
|
(->> groups
|
||||||
(map #(process-group % doc-map))
|
(map #(process-group % java-docs))
|
||||||
merge-groups
|
merge-groups
|
||||||
(remove nil?)
|
(remove nil?)
|
||||||
(assoc parsed-file :groups)))
|
(assoc parsed-file :groups)))
|
||||||
|
|
||||||
(defn parse-clj
|
(defn parse-clj
|
||||||
[doc-map]
|
[java-docs]
|
||||||
(->> (io/file "../src/")
|
(->> (io/file "../src/")
|
||||||
file-seq
|
file-seq
|
||||||
(filter #(-> % .getName (.endsWith ".clj")))
|
(filter #(-> % .getName (.endsWith ".clj")))
|
||||||
(sort-by #(.getName %))
|
(sort-by #(.getName %))
|
||||||
(map #(.getCanonicalPath %))
|
(map #(.getCanonicalPath %))
|
||||||
(map marg/path-to-doc)
|
(map marg/path-to-doc)
|
||||||
(map #(process-groups % doc-map))
|
(map #(process-groups % java-docs))
|
||||||
(filter #(> (count (:groups %)) 0))))
|
(filter #(> (count (:groups %)) 0))))
|
||||||
|
|
||||||
(defn save
|
(defn save
|
||||||
@@ -137,7 +140,7 @@
|
|||||||
[^RootDoc root]
|
[^RootDoc root]
|
||||||
(->> (map parse-class (.classes root))
|
(->> (map parse-class (.classes root))
|
||||||
(filter some?)
|
(filter some?)
|
||||||
(into {})
|
(apply concat)
|
||||||
parse-clj
|
parse-clj
|
||||||
save)
|
save)
|
||||||
(println "Created uberdoc.html and uberdoc.edn."))
|
(println "Created uberdoc.html and uberdoc.edn."))
|
||||||
|
|||||||
@@ -39,12 +39,14 @@
|
|||||||
(for [args arglists]
|
(for [args arglists]
|
||||||
[:div {:class "c-head"} (pr-str args)])
|
[:div {:class "c-head"} (pr-str args)])
|
||||||
[:div {:class "c-doc"} docstring]]
|
[:div {:class "c-doc"} docstring]]
|
||||||
(for [[item-name {:keys [text items]}] java]
|
(when (> (count java) 0)
|
||||||
(list (when (not= name item-name)
|
(list [:div {:class "c-head"} "Options"]
|
||||||
[:div {:class "j-head"} item-name])
|
(for [[item-name {:keys [text items]}] java]
|
||||||
[:div {:class "j-text"} text]
|
(list (when (> (count java) 1)
|
||||||
[:div {:class "java"}
|
[:div {:class "j-text"} text])
|
||||||
(map java-item items)]))
|
[:div {:class "java"}
|
||||||
|
(map java-item items)]))))
|
||||||
|
[:div {:class "c-head"} "Source"]
|
||||||
[:div {:class "c-src"}
|
[:div {:class "c-src"}
|
||||||
(when raw* [:pre raw*])
|
(when raw* [:pre raw*])
|
||||||
[:pre raw]]]))])
|
[:pre raw]]]))])
|
||||||
|
|||||||
Reference in New Issue
Block a user