From c078dc69e47f721703c37481e5ffe5f0addf2e60 Mon Sep 17 00:00:00 2001 From: Michiel Borkent Date: Wed, 30 Sep 2020 17:14:42 +0200 Subject: [PATCH] [#600] Support java.io.FileFilter --- sci | 2 +- src/babashka/impl/classes.clj | 1 + src/babashka/impl/reify.clj | 18 ++++++++++++++++++ src/babashka/main.clj | 12 +----------- 4 files changed, 21 insertions(+), 12 deletions(-) create mode 100644 src/babashka/impl/reify.clj diff --git a/sci b/sci index 17f03e8f..b70a79c9 160000 --- a/sci +++ b/sci @@ -1 +1 @@ -Subproject commit 17f03e8f73b08fbf30d870ceb23be0d7945f1d58 +Subproject commit b70a79c948bd6e7ebf8c91afe10063068b9d77d3 diff --git a/src/babashka/impl/classes.clj b/src/babashka/impl/classes.clj index cfbc2e2f..67fabb5f 100644 --- a/src/babashka/impl/classes.clj +++ b/src/babashka/impl/classes.clj @@ -89,6 +89,7 @@ java.io.ByteArrayOutputStream java.io.Console java.io.File + java.io.FileFilter java.io.FileNotFoundException java.io.InputStream java.io.IOException diff --git a/src/babashka/impl/reify.clj b/src/babashka/impl/reify.clj new file mode 100644 index 00000000..f836fee0 --- /dev/null +++ b/src/babashka/impl/reify.clj @@ -0,0 +1,18 @@ +(ns babashka.impl.reify + {:no-doc true}) + +(def reify-opts + {'java.nio.file.FileVisitor + (fn [{:keys [:methods]}] + {:obj (reify java.nio.file.FileVisitor + (preVisitDirectory [this p attrs] + ((get methods 'preVisitDirectory) this p attrs)) + (postVisitDirectory [this p attrs] + ((get methods 'postVisitDirectory) this p attrs)) + (visitFile [this p attrs] + ((get methods 'visitFile) this p attrs)))}) + 'java.io.FileFilter + (fn [{:keys [:methods]}] + {:obj (reify java.io.FileFilter + (accept [this f] + ((get methods 'accept) this f)))})}) diff --git a/src/babashka/main.clj b/src/babashka/main.clj index 291fe491..5fd5d319 100644 --- a/src/babashka/main.clj +++ b/src/babashka/main.clj @@ -22,6 +22,7 @@ [babashka.impl.pods :as pods] [babashka.impl.pprint :refer [pprint-namespace]] [babashka.impl.protocols :refer [protocols-namespace]] + [babashka.impl.reify :refer [reify-opts]] [babashka.impl.repl :as repl] [babashka.impl.socket-repl :as socket-repl] [babashka.impl.test :as t] @@ -434,17 +435,6 @@ If neither -e, -f, or --socket-repl are specified, then the first argument that Thread java.lang.Thread Throwable java.lang.Throwable}) -(def reify-opts - {'java.nio.file.FileVisitor - (fn [{:keys [:methods]}] - {:object (reify java.nio.file.FileVisitor - (preVisitDirectory [this p attrs] - ((get methods 'preVisitDirectory) this p attrs)) - (postVisitDirectory [this p attrs] - ((get methods 'postVisitDirectory) this p attrs)) - (visitFile [this p attrs] - ((get methods 'visitFile) this p attrs)))})}) - (def input-var (sci/new-dynamic-var '*input* nil)) (def edn-readers (cond-> {} features/yaml?