forked from zero-one-group/geni
-
Notifications
You must be signed in to change notification settings - Fork 0
/
docs.clj
32 lines (28 loc) · 796 Bytes
/
docs.clj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
(ns zero-one.geni.docs
(:require
[clojure.java.io :as io]
[taoensso.nippy :as nippy])
(:import
(org.apache.commons.io IOUtils)))
(def spark-docs
(-> "spark-docs.nippy"
io/resource
io/input-stream
IOUtils/toByteArray
nippy/thaw))
(defn alter-doc! [fn-name fn-var doc-maps]
(let [fn-key (keyword fn-name)
doc (->> doc-maps (mapv fn-key) (remove nil?) first)]
(when doc
(alter-meta! fn-var assoc :doc doc))))
(defn alter-docs-in-ns! [ns-sym doc-maps]
(let [public-vars (ns-publics ns-sym)]
(mapv
(fn [[fn-name fn-var]]
(alter-doc! fn-name fn-var doc-maps))
public-vars)
:succeeded))
(defn docless-vars [ns-sym]
(->> (ns-publics ns-sym)
(mapv second)
(filter #(-> % meta :doc nil?))))