diff --git a/codox/resources/codox/theme/default/css/default.css b/codox/resources/codox/theme/default/css/default.css index 4b5175c..e16171b 100644 --- a/codox/resources/codox/theme/default/css/default.css +++ b/codox/resources/codox/theme/default/css/default.css @@ -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; @@ -358,7 +359,8 @@ 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; @@ -366,7 +368,8 @@ h4.deprecated { .members h4.type, .members h4.added, -.members h4.deprecated { +.members h4.deprecated, +.members h4.lang { margin-top: 1px; } @@ -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; } diff --git a/codox/src/codox/main.clj b/codox/src/codox/main.clj index 4bde456..4327a0b 100644 --- a/codox/src/codox/main.clj +++ b/codox/src/codox/main.clj @@ -98,6 +98,33 @@ (add-source-paths root-path source-paths) (add-ns-defaults metadata))))) +(defn- get-var-langs + "Returns { { }} 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) @@ -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))))) diff --git a/codox/src/codox/writer/html.clj b/codox/src/codox/writer/html.clj index 3486d4f..ab7e1b6 100644 --- a/codox/src/codox/writer/html.clj +++ b/codox/src/codox/writer/html.clj @@ -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