Add and expose babashka.classes/all-classes (#1362)
* Add and expose babashka.classes/all-classes * Add test for babashka.classes/all-classes
This commit is contained in:
parent
d0d36a2bc4
commit
4926aaf85f
3 changed files with 27 additions and 7 deletions
|
|
@ -5,6 +5,7 @@
|
||||||
[babashka.impl.proxy :as proxy]
|
[babashka.impl.proxy :as proxy]
|
||||||
[cheshire.core :as json]
|
[cheshire.core :as json]
|
||||||
[clojure.core.async]
|
[clojure.core.async]
|
||||||
|
[sci.core :as sci]
|
||||||
[sci.impl.types :as t]))
|
[sci.impl.types :as t]))
|
||||||
|
|
||||||
(def base-custom-map
|
(def base-custom-map
|
||||||
|
|
@ -744,18 +745,25 @@
|
||||||
(sort-by :name)
|
(sort-by :name)
|
||||||
(vec)))
|
(vec)))
|
||||||
|
|
||||||
(defn all-methods []
|
(defn all-classes []
|
||||||
|
"Returns every java.lang.Class instance Babashka supports."
|
||||||
(->> (reflection-file-entries)
|
(->> (reflection-file-entries)
|
||||||
(map :name)
|
(map :name)
|
||||||
(map #(Class/forName %))
|
(map #(Class/forName %))))
|
||||||
(mapcat public-declared-method-names)))
|
|
||||||
|
(defn all-methods []
|
||||||
|
(mapcat public-declared-method-names (all-classes)))
|
||||||
|
|
||||||
|
(def cns (sci/create-ns 'babashka.classes nil))
|
||||||
|
|
||||||
|
(def classes-namespace
|
||||||
|
{:obj cns
|
||||||
|
'all-classes (sci/copy-var all-classes cns)})
|
||||||
|
|
||||||
(comment
|
(comment
|
||||||
(public-declared-method-names java.net.URL)
|
(public-declared-method-names java.net.URL)
|
||||||
(public-declared-method-names java.util.Properties)
|
(public-declared-method-names java.util.Properties)
|
||||||
|
|
||||||
(->> (reflection-file-entries)
|
(all-classes)
|
||||||
(map :name)
|
|
||||||
(map #(Class/forName %)))
|
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@
|
||||||
[babashka.fs :as fs]
|
[babashka.fs :as fs]
|
||||||
[babashka.impl.bencode :refer [bencode-namespace]]
|
[babashka.impl.bencode :refer [bencode-namespace]]
|
||||||
[babashka.impl.cheshire :refer [cheshire-core-namespace]]
|
[babashka.impl.cheshire :refer [cheshire-core-namespace]]
|
||||||
[babashka.impl.classes :as classes]
|
[babashka.impl.classes :as classes :refer [classes-namespace]]
|
||||||
[babashka.impl.classpath :as cp :refer [classpath-namespace]]
|
[babashka.impl.classpath :as cp :refer [classpath-namespace]]
|
||||||
[babashka.impl.cli :as cli]
|
[babashka.impl.cli :as cli]
|
||||||
[babashka.impl.clojure.core :as core :refer [core-extras]]
|
[babashka.impl.clojure.core :as core :refer [core-extras]]
|
||||||
|
|
@ -379,6 +379,7 @@ Use bb run --help to show this help output.
|
||||||
'clojure.test t/clojure-test-namespace
|
'clojure.test t/clojure-test-namespace
|
||||||
'clojure.math math-namespace
|
'clojure.math math-namespace
|
||||||
'babashka.classpath classpath-namespace
|
'babashka.classpath classpath-namespace
|
||||||
|
'babashka.classes classes-namespace
|
||||||
'clojure.pprint pprint-namespace
|
'clojure.pprint pprint-namespace
|
||||||
'babashka.curl curl-namespace
|
'babashka.curl curl-namespace
|
||||||
'babashka.fs fs-namespace
|
'babashka.fs fs-namespace
|
||||||
|
|
|
||||||
11
test/babashka/classes_test.clj
Normal file
11
test/babashka/classes_test.clj
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
(ns babashka.classes-test
|
||||||
|
(:require [babashka.test-utils :as tu]
|
||||||
|
[clojure.edn :as edn]
|
||||||
|
[clojure.test :as t :refer [deftest is testing]]))
|
||||||
|
|
||||||
|
(defn bb
|
||||||
|
[& args]
|
||||||
|
(edn/read-string (apply tu/bb nil (map pr-str args))))
|
||||||
|
|
||||||
|
(deftest all-classes-test
|
||||||
|
(is (true? (bb '(let [classes (babashka.classes/all-classes)] (and (seq classes) (every? class? classes)))))))
|
||||||
Loading…
Reference in a new issue