Skip to content

Commit

Permalink
Add linked platform labels ("clj", "cljs") to var docs
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
ptaoussanis committed Jul 6, 2023
1 parent f91fdf4 commit be6d7ed
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 5 deletions.
19 changes: 16 additions & 3 deletions codox/resources/codox/theme/default/css/default.css
Original file line number Diff line number Diff line change
Expand Up @@ -347,7 +347,8 @@ h5.license {
h4.type,
h4.dynamic,
h4.added,
h4.deprecated {
h4.deprecated,
h4.lang {
float: left;
margin: 3px 10px 15px 0;
font-size: 15px;
Expand All @@ -358,15 +359,17 @@ h4.deprecated {
.public h4.type,
.public h4.dynamic,
.public h4.added,
.public h4.deprecated {
.public h4.deprecated,
.public h4.lang {
font-size: 13px;
font-weight: bold;
margin: 3px 0 0 10px;
}

.members h4.type,
.members h4.added,
.members h4.deprecated {
.members h4.deprecated,
.members h4.lang {
margin-top: 1px;
}

Expand All @@ -386,6 +389,16 @@ h4.deprecated {
color: #880000;
}

.public h4.lang, .public h4.lang a {
font-weight: normal;
font-variant: normal;
color: #717171;
}

.public h4.lang.current {
color: #a33;
}

.namespace {
margin-bottom: 30px;
}
Expand Down
33 changes: 31 additions & 2 deletions codox/src/codox/main.clj
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,33 @@
(add-source-paths root-path source-paths)
(add-ns-defaults metadata)))))

(defn- get-var-langs
"Returns {<ns> {<var> <set-of-languages>}} for given namespaces."
([language namespaces var-langs]
(reduce
(fn [var-langs ns]
(reduce
(fn [var-langs public-var]
(update-in var-langs [(:name ns) (:name public-var)]
#(conj (or % #{}) language)))
var-langs
(:publics ns)))
var-langs
namespaces))

([options namespaces]
(if-not (:cross-platform? options)
(get-var-langs (:language options) namespaces {})
(reduce
(fn [var-langs language]
(get-var-langs language (get namespaces language) var-langs))
{}
(:languages options)))))

(comment (get-var-langs {:languages #{:clojure :clojurescript}}
'({:name codox.main :publics ({:name defaults} {:name bar})}
{:name codox.foo :publics ({:name bar})})))

(defn- read-documents [{:keys [doc-paths doc-files] :or {doc-files :all}}]
(cond
(not= doc-files :all) (map text/read-file doc-files)
Expand Down Expand Up @@ -145,7 +172,9 @@
(let [options (-> (merge defaults options) cross-platform-options)
write-fn (writer options)
namespaces (read-namespaces options)
documents (read-documents options)]
documents (read-documents options)
var-langs (get-var-langs options namespaces)]
(write-fn (assoc options
:namespaces namespaces
:documents documents)))))
:documents documents
:var-langs var-langs)))))
12 changes: 12 additions & 0 deletions codox/src/codox/writer/html.clj
Original file line number Diff line number Diff line change
Expand Up @@ -483,6 +483,18 @@
[:h4.type (name (:type var))])
(if (:dynamic var)
[:h4.dynamic "dynamic"])

(if (:cross-platform? project)
(let [var-langs (get-in project [:var-langs (:name namespace) (:name var)])
{:keys [language languages]} project]

(for [language* languages]
(when (contains? var-langs language*)
(if (= language language*)
[:h4.lang (link-to (var-uri (assoc namespace :language language*) var)
(:ext (language-info language*)))]
[:h4.lang.current (:ext (language-info language*))])))))

(added-and-deprecated-docs var)
(if (:type-sig var)
[:div.type-sig
Expand Down

0 comments on commit be6d7ed

Please sign in to comment.