Skip to content

Commit

Permalink
doc: show search-doc-url for Java classes
Browse files Browse the repository at this point in the history
  • Loading branch information
eval committed Feb 20, 2024
1 parent aa7cdf6 commit fe7ee3e
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 6 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,11 @@

## Unreleased

- Clojure 1.12.0-alpha7
- recipes: support regular gist-urls (without '/raw')
- recipes: remove leading comments
- doc: show search-doc-url for Java classes
- fix typos in README (@eNotchy)

## v0.10.0 (2023-12-04)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
(:require
[clojure.repl]
[rebel-readline.clojure.line-reader :as clj-reader]
[rebel-readline.clojure.utils :as clj-utils]
[rebel-readline.clojure.utils :as clj-utils :refer [when-pred]]
[rebel-readline.tools :as tools]
[rebel-readline.utils :as utils :refer [strip-literals log]]))

Expand Down Expand Up @@ -86,14 +86,37 @@
(defmethod clj-reader/-apropos ::service [_ var-str]
(clojure.repl/apropos var-str))


(defn- javadoc-url [var-str]
(when (some-> ((requiring-resolve 'compliment.core/completions) var-str)
first
:type
#{:method :constructor :static-method :static-field :class})
(when-let [supported-java-version (some->> (clj-utils/java-version)
(re-find #"^(\d*)\.")
last
parse-long
(when-pred #(> % 18)))]
(let [base-url (str "https://docs.oracle.com/en/java/javase/"
supported-java-version
"/docs/api/search.html?q=")
[_ nsed-klass method] (re-find #"([^/]+)(?:/(.+))?" var-str)
constructor-query #(when-let [clname (some->> % (re-find #"\.?([^/.]+)/new") last)]
(str nsed-klass "+" clname "("))
q (or (constructor-query var-str)
(cond-> nsed-klass
method (str "+" method)))]
(str base-url q)))))

(defmethod clj-reader/-doc ::service [self var-str]
#_(when-let [])
;; lazy-load for faster startup
(when-let [doc ((requiring-resolve 'compliment.core/documentation) var-str)]
(let [{:keys [ns name private]} (if (special-symbol? (symbol var-str))
{:ns (find-ns 'clojure.core) :name (symbol var-str)}
(clj-reader/-resolve-meta self var-str))
url (when (and (not private) ns) (clj-utils/url-for (str ns) (str name)))]
(let [{:keys [ns name private]
:as _meta} (if (special-symbol? (symbol var-str))
{:ns (find-ns 'clojure.core) :name (symbol var-str)}
(clj-reader/-resolve-meta self var-str))
url (when (and (not private) ns) (clj-utils/url-for (str ns) (str name)))
url (or url (javadoc-url var-str))]
(cond-> {:doc doc}
url (assoc :url url)))))

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,12 @@
(:require
[clojure.string :as string]))

(defn java-version []
(System/getProperty "java.version"))

(defn when-pred [pred v]
(when (pred v) v))

;; taken from cljs-api-gen.encode
(def cljs-api-encoding
{"." "DOT"
Expand Down

0 comments on commit fe7ee3e

Please sign in to comment.