Skip to content

Commit cf166eb

Browse files
committed
Add linked platform labels ("clj", "cljs") to var docs
Author: @ptaoussanis Note that this commit introduces new classes to `default.css` used (only) by "cross-platform" projects. This means: - NO behavioural changes are intended for non-cross-platform projects. - Cross-platform projects WILL require a theme that includes the new CSS classes.
1 parent f91fdf4 commit cf166eb

File tree

3 files changed

+59
-5
lines changed

3 files changed

+59
-5
lines changed

codox/resources/codox/theme/default/css/default.css

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,8 @@ h5.license {
347347
h4.type,
348348
h4.dynamic,
349349
h4.added,
350-
h4.deprecated {
350+
h4.deprecated,
351+
h4.lang {
351352
float: left;
352353
margin: 3px 10px 15px 0;
353354
font-size: 15px;
@@ -358,15 +359,17 @@ h4.deprecated {
358359
.public h4.type,
359360
.public h4.dynamic,
360361
.public h4.added,
361-
.public h4.deprecated {
362+
.public h4.deprecated,
363+
.public h4.lang {
362364
font-size: 13px;
363365
font-weight: bold;
364366
margin: 3px 0 0 10px;
365367
}
366368

367369
.members h4.type,
368370
.members h4.added,
369-
.members h4.deprecated {
371+
.members h4.deprecated,
372+
.members h4.lang {
370373
margin-top: 1px;
371374
}
372375

@@ -386,6 +389,16 @@ h4.deprecated {
386389
color: #880000;
387390
}
388391

392+
.public h4.lang, .public h4.lang a {
393+
font-weight: normal;
394+
font-variant: normal;
395+
color: #717171;
396+
}
397+
398+
.public h4.lang.current {
399+
color: #a33;
400+
}
401+
389402
.namespace {
390403
margin-bottom: 30px;
391404
}

codox/src/codox/main.clj

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,33 @@
9898
(add-source-paths root-path source-paths)
9999
(add-ns-defaults metadata)))))
100100

101+
(defn- get-var-langs
102+
"Returns {<ns> {<var> <set-of-languages>}} for given namespaces."
103+
([language namespaces var-langs]
104+
(reduce
105+
(fn [var-langs ns]
106+
(reduce
107+
(fn [var-langs public-var]
108+
(update-in var-langs [(:name ns) (:name public-var)]
109+
#(conj (or % #{}) language)))
110+
var-langs
111+
(:publics ns)))
112+
var-langs
113+
namespaces))
114+
115+
([options namespaces]
116+
(if-not (:cross-platform? options)
117+
(get-var-langs (:language options) namespaces {})
118+
(reduce
119+
(fn [var-langs language]
120+
(get-var-langs language (get namespaces language) var-langs))
121+
{}
122+
(:languages options)))))
123+
124+
(comment (get-var-langs {:languages #{:clojure :clojurescript}}
125+
'({:name codox.main :publics ({:name defaults} {:name bar})}
126+
{:name codox.foo :publics ({:name bar})})))
127+
101128
(defn- read-documents [{:keys [doc-paths doc-files] :or {doc-files :all}}]
102129
(cond
103130
(not= doc-files :all) (map text/read-file doc-files)
@@ -145,7 +172,9 @@
145172
(let [options (-> (merge defaults options) cross-platform-options)
146173
write-fn (writer options)
147174
namespaces (read-namespaces options)
148-
documents (read-documents options)]
175+
documents (read-documents options)
176+
var-langs (get-var-langs options namespaces)]
149177
(write-fn (assoc options
150178
:namespaces namespaces
151-
:documents documents)))))
179+
:documents documents
180+
:var-langs var-langs)))))

codox/src/codox/writer/html.clj

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -483,6 +483,18 @@
483483
[:h4.type (name (:type var))])
484484
(if (:dynamic var)
485485
[:h4.dynamic "dynamic"])
486+
487+
(if (:cross-platform? project)
488+
(let [var-langs (get-in project [:var-langs (:name namespace) (:name var)])
489+
{:keys [language languages]} project]
490+
491+
(for [language* languages]
492+
(when (contains? var-langs language*)
493+
(if (= language language*)
494+
[:h4.lang.current (:ext (language-info language*))]
495+
[:h4.lang (link-to (var-uri (assoc namespace :language language*) var)
496+
(:ext (language-info language*)))])))))
497+
486498
(added-and-deprecated-docs var)
487499
(if (:type-sig var)
488500
[:div.type-sig

0 commit comments

Comments
 (0)