Skip to content

Commit 2fe80a2

Browse files
committed
Attach see-also metadata to special syms
1 parent 1f53be9 commit 2fe80a2

File tree

3 files changed

+15
-2
lines changed

3 files changed

+15
-2
lines changed

src/orchard/clojuredocs.clj

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,3 +88,12 @@
8888
(find-doc ns sym default-edn-file-url))
8989
([ns sym export-edn-url]
9090
(get-doc (keyword ns sym) export-edn-url)))
91+
92+
(defn- kw-to-sym [kw]
93+
(symbol (subs (str kw) 1)))
94+
95+
(defn see-also
96+
"Get the see-alsos for `var-name` if any."
97+
[var-name]
98+
(if-let [see-alsos (:see-alsos (get-doc var-name))]
99+
(map kw-to-sym see-alsos)))

src/orchard/meta.clj

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,8 @@
7373
(defn- maybe-add-see-also
7474
"If the var `v` has a see-also has associated with it, assoc that into meta-map."
7575
[v meta-map]
76-
(if-let [see-also (:see-alsos (cljdocs/get-doc (var-name v)))]
77-
(merge meta-map {:see-also (map symbol see-also)})
76+
(if-let [see-also (cljdocs/see-also (var-name v))]
77+
(merge meta-map {:see-also see-also})
7878
meta-map))
7979

8080
(defn- maybe-protocol
@@ -151,6 +151,7 @@
151151
(when-let [m (and compiler-special? (repl-special-meta sym))]
152152
(-> m
153153
(assoc :name orig-sym)
154+
(assoc :see-also (cljdocs/see-also (format "clojure.core/%s" sym)))
154155
maybe-add-url))))
155156

156157
(def var-meta-whitelist

test/orchard/meta_test.clj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,9 @@
6262
(is (= 'catch (:name (m/special-sym-meta 'catch))))
6363
(is (= 'finally (:name (m/special-sym-meta 'finally)))))
6464

65+
(testing ":see-also metadata is attached"
66+
(is (not-empty (:see-also (m/special-sym-meta 'if)))))
67+
6568
(testing "Name is correct for `clojure.core/import*`"
6669
;; Only compiler special to be namespaced
6770
(is (= 'clojure.core/import* (:name (m/special-sym-meta 'clojure.core/import*)))))

0 commit comments

Comments
 (0)