diff --git a/README.md b/README.md index e929bf8..cb274dd 100644 --- a/README.md +++ b/README.md @@ -43,6 +43,7 @@ Marginalia accepts options as described below: * -c --css Additional css resources `;;...` (if not given will be taken from `project.clj`) * -j --js Additional javascript resources `;;...` (if not given will be taken from `project.clj`) * -m --multi Generate each namespace documentation as a separate file + * -e --exclude Exclude source file(s) from the document generation process `;;...` (if not given will be taken from `project.clj`) ### Maven @@ -119,6 +120,7 @@ Marginalia is... - [MerelyAPseudonym](https://github.com/MerelyAPseudonym) - [Ivan](https://github.com/ivantm) - [Benjamin Bader](https://github.com/benjamin-bader) +- [Frederick Giasson](https://github.com/fgiasson) If I've missed your name then please ping me. diff --git a/src/marginalia/core.clj b/src/marginalia/core.clj index a06688b..6577d3b 100644 --- a/src/marginalia/core.clj +++ b/src/marginalia/core.clj @@ -234,6 +234,17 @@ [(if (= group artifact) artifact (str group "/" artifact)) version]))) +(defn source-excluded? + "Check if a source file is excluded from the generated documentation" + [source opts] + (if-not (empty? + (filter #(if (re-find (re-pattern %) source) + true + false) + (-> opts :marginalia :exclude))) + true + false)) + (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: @@ -245,7 +256,7 @@ 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] + (let [[{:keys [dir file name version desc deps css js multi leiningen exclude]} 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"] @@ -259,7 +270,9 @@ ["-j" "--js" "Additional javascript resources ;;... 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."]) + ["-l" "--leiningen" "Generate the documentation for a Leiningen project file."] + ["-e" "--exclude" "Exclude source file(s) from the document generation process ;;... + If not given will be taken from project.clj"]) sources (distinct (format-sources (seq files))) sources (if leiningen (cons leiningen sources) sources)] (if-not sources @@ -274,6 +287,7 @@ marg-opts (merge-with choose {:css (when css (.split css ";")) :javascript (when js (.split js ";")) + :exclude (when exclude (.split exclude ";")) :leiningen leiningen} (:marginalia project-clj)) opts (merge-with choose @@ -283,7 +297,10 @@ :dependencies (split-deps deps) :multi multi :marginalia marg-opts} - project-clj)] + project-clj) + sources (->> sources + (filter #(not (source-excluded? % opts))) + (into []))] (println "Generating Marginalia documentation for the following source files:") (doseq [s sources] (println " " s)) diff --git a/src/marginalia/html.clj b/src/marginalia/html.clj index 27db23d..89c59a8 100644 --- a/src/marginalia/html.clj +++ b/src/marginalia/html.clj @@ -131,6 +131,15 @@ ;; to project.clj. Below is a simple example of both inline and block ;; formatted equations. ;; +;; Optionally, you can put the MathJax CDN URL directly as a value of `:javascript` +;; like this: +;; +;; :marginalia { +;; :javascript +;; ["http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"]} +;; +;; That way you won't have to download and carry around the MathJax library. +;; ;; When \\(a \ne 0\\), there are two solutions to \\(ax^2 + bx + c = 0\\) and they are ;; $$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$