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]
|
||||
[cheshire.core :as json]
|
||||
[clojure.core.async]
|
||||
[sci.core :as sci]
|
||||
[sci.impl.types :as t]))
|
||||
|
||||
(def base-custom-map
|
||||
|
|
@ -744,18 +745,25 @@
|
|||
(sort-by :name)
|
||||
(vec)))
|
||||
|
||||
(defn all-methods []
|
||||
(defn all-classes []
|
||||
"Returns every java.lang.Class instance Babashka supports."
|
||||
(->> (reflection-file-entries)
|
||||
(map :name)
|
||||
(map #(Class/forName %))
|
||||
(mapcat public-declared-method-names)))
|
||||
(map #(Class/forName %))))
|
||||
|
||||
(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
|
||||
(public-declared-method-names java.net.URL)
|
||||
(public-declared-method-names java.util.Properties)
|
||||
|
||||
(->> (reflection-file-entries)
|
||||
(map :name)
|
||||
(map #(Class/forName %)))
|
||||
(all-classes)
|
||||
|
||||
)
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
[babashka.fs :as fs]
|
||||
[babashka.impl.bencode :refer [bencode-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.cli :as cli]
|
||||
[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.math math-namespace
|
||||
'babashka.classpath classpath-namespace
|
||||
'babashka.classes classes-namespace
|
||||
'clojure.pprint pprint-namespace
|
||||
'babashka.curl curl-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