parent
d2ea4ee1bb
commit
ef06175678
10 changed files with 65 additions and 9 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -15,6 +15,6 @@ pom.xml.asc
|
||||||
!java/src/babashka/impl/LockFix.class
|
!java/src/babashka/impl/LockFix.class
|
||||||
!test-resources/babashka/src_for_classpath_test/foo.jar
|
!test-resources/babashka/src_for_classpath_test/foo.jar
|
||||||
.cpcache
|
.cpcache
|
||||||
reflection.json
|
*reflection.json
|
||||||
/tmp
|
/tmp
|
||||||
/reports
|
/reports
|
||||||
|
|
|
||||||
|
|
@ -211,6 +211,7 @@ enumerated explicitly.
|
||||||
- [`clojure.tools.cli`](https://github.com/clojure/tools.cli) aliased as `tools.cli`
|
- [`clojure.tools.cli`](https://github.com/clojure/tools.cli) aliased as `tools.cli`
|
||||||
- [`clojure.data.csv`](https://github.com/clojure/data.csv) aliased as `csv`
|
- [`clojure.data.csv`](https://github.com/clojure/data.csv) aliased as `csv`
|
||||||
- [`cheshire.core`](https://github.com/dakrone/cheshire) aliased as `json`
|
- [`cheshire.core`](https://github.com/dakrone/cheshire) aliased as `json`
|
||||||
|
- [`cognitect.transit`](https://github.com/cognitect/transit-clj) aliased as `transit`
|
||||||
|
|
||||||
A selection of java classes are available, see `babashka/impl/classes.clj`.
|
A selection of java classes are available, see `babashka/impl/classes.clj`.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -53,6 +53,9 @@ Then run:
|
||||||
|
|
||||||
Keep notes here about how adding libraries and classes to Babashka affects the binary size.
|
Keep notes here about how adding libraries and classes to Babashka affects the binary size.
|
||||||
|
|
||||||
|
2020/03/20 Added transit write, writer, read, reader
|
||||||
|
42004796 - 41025212 = 980kb added (305kb zipped).
|
||||||
|
|
||||||
2020/03/19 Added java.lang.NumberFormatException, java.lang.RuntimeException,
|
2020/03/19 Added java.lang.NumberFormatException, java.lang.RuntimeException,
|
||||||
java.util.MissingResourceException and java.util.Properties to support
|
java.util.MissingResourceException and java.util.Properties to support
|
||||||
[cprop](https://github.com/tolitius/cprop/).
|
[cprop](https://github.com/tolitius/cprop/).
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,8 @@
|
||||||
[org.clojure/tools.cli "0.4.2"]
|
[org.clojure/tools.cli "0.4.2"]
|
||||||
[org.clojure/data.csv "1.0.0"]
|
[org.clojure/data.csv "1.0.0"]
|
||||||
[cheshire "5.10.0"]
|
[cheshire "5.10.0"]
|
||||||
[fipp "0.6.22"]]
|
[fipp "0.6.22"]
|
||||||
|
[com.cognitect/transit-clj "1.0.324"]]
|
||||||
:profiles {:test {:dependencies [[clj-commons/conch "0.9.2"]
|
:profiles {:test {:dependencies [[clj-commons/conch "0.9.2"]
|
||||||
[com.clojure-goes-fast/clj-async-profiler "0.4.0"]]}
|
[com.clojure-goes-fast/clj-async-profiler "0.4.0"]]}
|
||||||
:uberjar {:global-vars {*assert* false}
|
:uberjar {:global-vars {*assert* false}
|
||||||
|
|
|
||||||
|
|
@ -198,7 +198,9 @@
|
||||||
(instance? java.io.ByteArrayOutputStream v)
|
(instance? java.io.ByteArrayOutputStream v)
|
||||||
java.io.ByteArrayOutputStream
|
java.io.ByteArrayOutputStream
|
||||||
(instance? java.security.MessageDigest v)
|
(instance? java.security.MessageDigest v)
|
||||||
java.security.MessageDigest)))))
|
java.security.MessageDigest
|
||||||
|
(instance? java.io.InputStream v)
|
||||||
|
java.io.InputStream)))))
|
||||||
|
|
||||||
(def class-map (gen-class-map))
|
(def class-map (gen-class-map))
|
||||||
|
|
||||||
|
|
|
||||||
12
src/babashka/impl/transit.clj
Normal file
12
src/babashka/impl/transit.clj
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
(ns babashka.impl.transit
|
||||||
|
(:require [cognitect.transit :as transit]
|
||||||
|
[sci.impl.namespaces :refer [copy-var]]
|
||||||
|
[sci.impl.vars :as vars]))
|
||||||
|
|
||||||
|
(def tns (vars/->SciNamespace 'cognitect.transit nil))
|
||||||
|
|
||||||
|
(def transit-namespace
|
||||||
|
{'write (copy-var transit/write tns)
|
||||||
|
'writer (copy-var transit/writer tns)
|
||||||
|
'read (copy-var transit/read tns)
|
||||||
|
'reader (copy-var transit/reader tns)})
|
||||||
|
|
@ -19,6 +19,7 @@
|
||||||
[babashka.impl.socket-repl :as socket-repl]
|
[babashka.impl.socket-repl :as socket-repl]
|
||||||
[babashka.impl.test :as t]
|
[babashka.impl.test :as t]
|
||||||
[babashka.impl.tools.cli :refer [tools-cli-namespace]]
|
[babashka.impl.tools.cli :refer [tools-cli-namespace]]
|
||||||
|
[babashka.impl.transit :refer [transit-namespace]]
|
||||||
[babashka.wait :as wait]
|
[babashka.wait :as wait]
|
||||||
[clojure.edn :as edn]
|
[clojure.edn :as edn]
|
||||||
[clojure.java.io :as io]
|
[clojure.java.io :as io]
|
||||||
|
|
@ -26,11 +27,11 @@
|
||||||
[clojure.string :as str]
|
[clojure.string :as str]
|
||||||
[sci.addons :as addons]
|
[sci.addons :as addons]
|
||||||
[sci.core :as sci]
|
[sci.core :as sci]
|
||||||
[sci.impl.interpreter :refer [eval-string* eval-form]]
|
[sci.impl.interpreter :refer [eval-string*]]
|
||||||
[sci.impl.opts :as sci-opts]
|
[sci.impl.opts :as sci-opts]
|
||||||
|
[sci.impl.types :as sci-types]
|
||||||
[sci.impl.unrestrict :refer [*unrestricted*]]
|
[sci.impl.unrestrict :refer [*unrestricted*]]
|
||||||
[sci.impl.vars :as vars]
|
[sci.impl.vars :as vars])
|
||||||
[sci.impl.types :as sci-types])
|
|
||||||
(:gen-class))
|
(:gen-class))
|
||||||
|
|
||||||
(binding [*unrestricted* true]
|
(binding [*unrestricted* true]
|
||||||
|
|
@ -234,7 +235,8 @@ Everything after that is bound to *command-line-args*."))
|
||||||
async clojure.core.async
|
async clojure.core.async
|
||||||
csv clojure.data.csv
|
csv clojure.data.csv
|
||||||
json cheshire.core
|
json cheshire.core
|
||||||
curl babashka.curl})
|
curl babashka.curl
|
||||||
|
transit cognitect.transit})
|
||||||
|
|
||||||
(def cp-state (atom nil))
|
(def cp-state (atom nil))
|
||||||
|
|
||||||
|
|
@ -265,7 +267,8 @@ Everything after that is bound to *command-line-args*."))
|
||||||
'clojure.test t/clojure-test-namespace
|
'clojure.test t/clojure-test-namespace
|
||||||
'babashka.classpath {'add-classpath add-classpath*}
|
'babashka.classpath {'add-classpath add-classpath*}
|
||||||
'clojure.pprint pprint-namespace
|
'clojure.pprint pprint-namespace
|
||||||
'babashka.curl curl-namespace})
|
'babashka.curl curl-namespace
|
||||||
|
'cognitect.transit transit-namespace})
|
||||||
|
|
||||||
(def bindings
|
(def bindings
|
||||||
{'java.lang.System/exit exit ;; override exit, so we have more control
|
{'java.lang.System/exit exit ;; override exit, so we have more control
|
||||||
|
|
|
||||||
18
test-resources/babashka/transit.clj
Normal file
18
test-resources/babashka/transit.clj
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
(require '[cognitect.transit :as transit])
|
||||||
|
(import [java.io ByteArrayInputStream ByteArrayOutputStream])
|
||||||
|
|
||||||
|
;; Write data to a stream
|
||||||
|
(def out (ByteArrayOutputStream. 4096))
|
||||||
|
(def writer (transit/writer out :json))
|
||||||
|
(transit/write writer "foo")
|
||||||
|
(transit/write writer {:a [1 2]})
|
||||||
|
|
||||||
|
;; Take a peek at the JSON
|
||||||
|
(.toString out)
|
||||||
|
;; => "{\"~#'\":\"foo\"} [\"^ \",\"~:a\",[1,2]]"
|
||||||
|
|
||||||
|
;; Read data from a stream
|
||||||
|
(def in (ByteArrayInputStream. (.toByteArray out)))
|
||||||
|
(def reader (transit/reader in :json))
|
||||||
|
(prn (transit/read reader)) ;; => "foo"
|
||||||
|
(prn (transit/read reader)) ;; => {:a [1 2]}
|
||||||
|
|
@ -29,7 +29,7 @@
|
||||||
|
|
||||||
(deftest main-test
|
(deftest main-test
|
||||||
(testing "-io behaves as identity"
|
(testing "-io behaves as identity"
|
||||||
(= "foo\nbar\n" (test-utils/bb "foo\nbar\n" "-io" "*input*")))
|
(is (= "foo\nbar\n" (test-utils/bb "foo\nbar\n" "-io" "*input*"))))
|
||||||
(testing "if and when"
|
(testing "if and when"
|
||||||
(is (= 1 (bb 0 '(if (zero? *input*) 1 2))))
|
(is (= 1 (bb 0 '(if (zero? *input*) 1 2))))
|
||||||
(is (= 2 (bb 1 '(if (zero? *input*) 1 2))))
|
(is (= 2 (bb 1 '(if (zero? *input*) 1 2))))
|
||||||
|
|
@ -355,6 +355,9 @@
|
||||||
(is (= :clojure.string/foo
|
(is (= :clojure.string/foo
|
||||||
(bb nil "(ns foo (:require [clojure.string :as str])) (read-string \"::str/foo\")")))))
|
(bb nil "(ns foo (:require [clojure.string :as str])) (read-string \"::str/foo\")")))))
|
||||||
|
|
||||||
|
(deftest available-stream-test
|
||||||
|
(is (= 0 (bb nil "(.available System/in)"))))
|
||||||
|
|
||||||
;;;; Scratch
|
;;;; Scratch
|
||||||
|
|
||||||
(comment
|
(comment
|
||||||
|
|
|
||||||
13
test/babashka/transit_test.clj
Normal file
13
test/babashka/transit_test.clj
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
(ns babashka.transit-test
|
||||||
|
(:require
|
||||||
|
[babashka.test-utils :as test-utils]
|
||||||
|
[clojure.java.io :as io]
|
||||||
|
[clojure.test :as t :refer [deftest is]]))
|
||||||
|
|
||||||
|
(defn bb [& args]
|
||||||
|
(apply test-utils/bb nil (map str args)))
|
||||||
|
|
||||||
|
(deftest transit-test
|
||||||
|
(is (= "\"foo\"\n{:a [1 2]}\n"
|
||||||
|
(bb (format "(load-file \"%s\")"
|
||||||
|
(.getPath (io/file "test-resources" "babashka" "transit.clj")))))))
|
||||||
Loading…
Reference in a new issue