Removed the default
This commit is contained in:
parent
e512fec93c
commit
8522fa3fba
1 changed files with 1 additions and 116 deletions
|
@ -148,122 +148,7 @@
|
||||||
(defn merge-line [line m]
|
(defn merge-line [line m]
|
||||||
(cond
|
(cond
|
||||||
(:docstring-text line) (assoc m
|
(:docstring-text line) (assoc m
|
||||||
:docs
|
])
|
||||||
(conj (get m :docs []) line))
|
|
||||||
(:code-text line) (assoc m
|
|
||||||
:codes
|
|
||||||
(conj (get m :codes []) line))
|
|
||||||
(:docs-text line) (assoc m
|
|
||||||
:docs
|
|
||||||
(conj (get m :docs []) line))))
|
|
||||||
|
|
||||||
(defn group-lines [doc-lines]
|
|
||||||
(loop [cur-group {}
|
|
||||||
groups []
|
|
||||||
lines doc-lines]
|
|
||||||
(cond
|
|
||||||
(empty? lines) (conj groups cur-group)
|
|
||||||
|
|
||||||
(end-of-block? cur-group groups lines)
|
|
||||||
(recur (merge-line (first lines) {}) (conj groups cur-group) (rest lines))
|
|
||||||
|
|
||||||
:else (recur (merge-line (first lines) cur-group) groups (rest lines)))))
|
|
||||||
|
|
||||||
(defn path-to-doc [fn]
|
|
||||||
(let [file (java.io.File. fn)
|
|
||||||
ns (-> file
|
|
||||||
(read-file-ns-decl)
|
|
||||||
(second)
|
|
||||||
(str))
|
|
||||||
ns (if (or (nil? ns) (empty? ns)) (.getName file) ns)
|
|
||||||
groups (parse-file fn)]
|
|
||||||
{:ns ns
|
|
||||||
:groups groups}))
|
|
||||||
|
|
||||||
|
|
||||||
;; ## Output Generation
|
|
||||||
|
|
||||||
(defn filename-contents
|
|
||||||
[props output-dir all-files parsed-file]
|
|
||||||
{:name (io/file output-dir (str (:ns parsed-file) ".html"))
|
|
||||||
:contents (single-page-html props parsed-file all-files)})
|
|
||||||
|
|
||||||
(defn multidoc!
|
|
||||||
[output-dir files-to-analyze props]
|
|
||||||
(let [parsed-files (map path-to-doc files-to-analyze)
|
|
||||||
index (index-html props parsed-files)
|
|
||||||
pages (map #(filename-contents props output-dir parsed-files %) parsed-files)]
|
|
||||||
(doseq [f (conj pages {:name (io/file output-dir "toc.html")
|
|
||||||
:contents index})]
|
|
||||||
(spit (:name f) (:contents f)))))
|
|
||||||
|
|
||||||
(defn uberdoc!
|
|
||||||
"Generates an uberdoc html file from 3 pieces of information:
|
|
||||||
|
|
||||||
2. The path to spit the result (`output-file-name`)
|
|
||||||
1. Results from processing source files (`path-to-doc`)
|
|
||||||
3. Project metadata as a map, containing at a minimum the following:
|
|
||||||
- :name
|
|
||||||
- :version
|
|
||||||
"
|
|
||||||
[output-file-name files-to-analyze props]
|
|
||||||
(let [source (uberdoc-html
|
|
||||||
props
|
|
||||||
(map path-to-doc files-to-analyze))]
|
|
||||||
(spit output-file-name source)))
|
|
||||||
|
|
||||||
;; ## External Interface (command-line, lein, cake, etc)
|
|
||||||
|
|
||||||
;; These functions support Marginalia's use by client software or command-line
|
|
||||||
;; users.
|
|
||||||
|
|
||||||
(def ^:private file-extensions #{"clj" "cljs" "cljx"})
|
|
||||||
|
|
||||||
(defn format-sources
|
|
||||||
"Given a collection of filepaths, returns a lazy sequence of filepaths to all
|
|
||||||
.clj, .cljs, and .cljx files on those paths: directory paths will be searched
|
|
||||||
recursively for files."
|
|
||||||
[sources]
|
|
||||||
(if (nil? sources)
|
|
||||||
(find-processable-file-paths "./src" file-extensions)
|
|
||||||
(->> sources
|
|
||||||
(mapcat #(if (dir? %)
|
|
||||||
(find-processable-file-paths % file-extensions)
|
|
||||||
[(.getCanonicalPath (io/file %))])))))
|
|
||||||
|
|
||||||
(defn split-deps [deps]
|
|
||||||
(when deps
|
|
||||||
(for [d (.split deps ";")
|
|
||||||
:let [[group artifact version] (.split d ":")]]
|
|
||||||
[(if (= group artifact) artifact (str group "/" artifact))
|
|
||||||
version])))
|
|
||||||
|
|
||||||
(defn run-marginalia
|
|
||||||
"Default generation: given a collection of filepaths in a project, find the .clj
|
|
||||||
files at these paths and, if Clojure source files are found:
|
|
||||||
|
|
||||||
1. Print out a message to std out letting a user know which files are to be processed;
|
|
||||||
1. Create the docs directory inside the project folder if it doesn't already exist;
|
|
||||||
1. Call the uberdoc! function to generate the output file at its default location,
|
|
||||||
using the found source files and a project file expected to be in its default location.
|
|
||||||
|
|
||||||
If no source files are found, complain with a usage message."
|
|
||||||
[args & [project]]
|
|
||||||
(let [[{:keys [dir file name version desc deps css js multi leiningen]} files help]
|
|
||||||
(cli args
|
|
||||||
["-d" "--dir" "Directory into which the documentation will be written" :default "./docs"]
|
|
||||||
["-f" "--file" "File into which the documentation will be written" :default "uberdoc.html"]
|
|
||||||
["-n" "--name" "Project name - if not given will be taken from project.clj"]
|
|
||||||
["-v" "--version" "Project version - if not given will be taken from project.clj"]
|
|
||||||
["-D" "--desc" "Project description - if not given will be taken from project.clj"]
|
|
||||||
["-a" "--deps" "Project dependencies in the form <group1>:<artifact1>:<version1>;<group2>...
|
|
||||||
If not given will be taken from project.clj"]
|
|
||||||
["-c" "--css" "Additional css resources <resource1>;<resource2>;...
|
|
||||||
If not given will be taken from project.clj."]
|
|
||||||
["-j" "--js" "Additional javascript resources <resource1>;<resource2>;...
|
|
||||||
If not given will be taken from project.clj"]
|
|
||||||
["-m" "--multi" "Generate each namespace documentation as a separate file" :flag true]
|
|
||||||
["-l" "--leiningen" "Generate the documentation for a Leiningen project file." :default "./project.clj"])
|
|
||||||
sources (distinct (format-sources (seq files)))
|
sources (distinct (format-sources (seq files)))
|
||||||
sources (if leiningen (cons leiningen sources) sources)]
|
sources (if leiningen (cons leiningen sources) sources)]
|
||||||
(if-not sources
|
(if-not sources
|
||||||
|
|
Loading…
Reference in a new issue