Parse clj files
This commit is contained in:
@@ -1,9 +1,9 @@
|
|||||||
This doclet generates the play-clj doc site.
|
This doclet generates the play-clj doc site.
|
||||||
|
|
||||||
## Usage
|
## Directions
|
||||||
|
|
||||||
1. Download and extract the [LibGDX source code](https://github.com/libgdx/libgdx/releases)
|
1. Download and extract the [LibGDX source code](https://github.com/libgdx/libgdx/releases)
|
||||||
2. Run `lein uberjar` in this directory
|
2. Run `lein uberjar` in this directory
|
||||||
3. Run the following command in this directory:
|
3. Run the following command in this directory:
|
||||||
|
|
||||||
`javadoc -sourcepath ~/path/to/libgdx/gdx/src/ -subpackages com.badlogic -doclet play_clj_doclet.core.Start -docletpath target/play-clj-doclet-0.0.1-SNAPSHOT-standalone.jar`
|
`javadoc -sourcepath path/to/libgdx/gdx/src/ -subpackages com.badlogic -doclet play_clj_doclet.core.Start -docletpath target/play-clj-doclet-0.0.1-SNAPSHOT-standalone.jar`
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
(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 [[hiccup "1.0.5"]
|
||||||
[hiccup "1.0.5"]]
|
[marginalia "0.7.1"]
|
||||||
|
[org.clojure/clojure "1.6.0"]]
|
||||||
: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.java.io :as io]
|
[clojure.java.io :as io]
|
||||||
|
[clojure.string :as string]
|
||||||
|
[marginalia.core :as marg]
|
||||||
[play-clj-doclet.html :as html])
|
[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]))
|
||||||
@@ -50,15 +51,49 @@
|
|||||||
(map #(vector (first %) (parse-class-entry c (second %))))
|
(map #(vector (first %) (parse-class-entry c (second %))))
|
||||||
(into {})))
|
(into {})))
|
||||||
|
|
||||||
(defn save
|
(def ^:const valid-syms #{'defn 'defmacro})
|
||||||
|
|
||||||
|
(defn match?
|
||||||
|
[doc-name sym-name]
|
||||||
|
(or (= doc-name sym-name)
|
||||||
|
(.startsWith doc-name (str sym-name " "))))
|
||||||
|
|
||||||
|
(defn process-group
|
||||||
|
[{:keys [type raw] :as group} doc-map]
|
||||||
|
(let [form (read-string raw)
|
||||||
|
n (second form)]
|
||||||
|
(when (and (contains? valid-syms (first form))
|
||||||
|
(-> n meta :private not))
|
||||||
|
(assoc group
|
||||||
|
:name (str n)
|
||||||
|
:java (filter #(match? (first %) (str n)) doc-map)))))
|
||||||
|
|
||||||
|
(defn process-groups
|
||||||
|
[{:keys [groups] :as parsed-file} doc-map]
|
||||||
|
(->> (map #(process-group % doc-map) groups)
|
||||||
|
(remove #(nil? (:name %)))
|
||||||
|
(assoc parsed-file :groups)))
|
||||||
|
|
||||||
|
(defn parse-clj
|
||||||
[doc-map]
|
[doc-map]
|
||||||
(->> doc-map pr-str (spit (io/file "uberdoc.edn")))
|
(->> (io/file "../src/")
|
||||||
(->> doc-map html/create (spit (io/file "uberdoc.html"))))
|
file-seq
|
||||||
|
(filter #(-> % .getName (.endsWith ".clj")))
|
||||||
|
(sort-by #(.getName %))
|
||||||
|
(map #(.getCanonicalPath %))
|
||||||
|
(map marg/path-to-doc)
|
||||||
|
(map #(process-groups % doc-map))))
|
||||||
|
|
||||||
|
(defn save
|
||||||
|
[parsed-files]
|
||||||
|
(->> parsed-files pr-str (spit (io/file "uberdoc.edn")))
|
||||||
|
(->> parsed-files html/create (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 {})
|
||||||
|
parse-clj
|
||||||
save)
|
save)
|
||||||
(println "Created uberdoc.html and uberdoc.edn."))
|
(println "Created uberdoc.html and uberdoc.edn."))
|
||||||
|
|||||||
@@ -23,14 +23,20 @@
|
|||||||
[:b (str name)]
|
[:b (str name)]
|
||||||
" "
|
" "
|
||||||
(string/join ", " (map param params))]
|
(string/join ", " (map param params))]
|
||||||
[:i text]])
|
(when (> (count text) 0)
|
||||||
|
[:i text])])
|
||||||
|
|
||||||
(defn section
|
(defn create-from-file
|
||||||
[[clj-name items]]
|
[parsed-file]
|
||||||
[:div
|
(for [group (:groups parsed-file)]
|
||||||
[:h2 {} clj-name]
|
[:div
|
||||||
(map item (sort-by first items))])
|
[:h1 {} (:name group)]
|
||||||
|
(for [[name items] (:java group)]
|
||||||
|
[:div
|
||||||
|
(when (not= (:name group) name)
|
||||||
|
[:h3 name])
|
||||||
|
(map item (sort-by first items))])]))
|
||||||
|
|
||||||
(defn create
|
(defn create
|
||||||
[doc-map]
|
[parsed-files]
|
||||||
(html (map section doc-map)))
|
(html (map create-from-file parsed-files)))
|
||||||
|
|||||||
Reference in New Issue
Block a user