diff --git a/deps.edn b/deps.edn index cd9e36f8..b190e616 100644 --- a/deps.edn +++ b/deps.edn @@ -42,7 +42,8 @@ selmer/selmer {:mvn/version "1.12.44"} com.taoensso/timbre {:mvn/version "5.1.2"} org.clojure/tools.logging {:mvn/version "1.1.0"} - org.clojure/data.priority-map {:mvn/version "1.1.0"}} + org.clojure/data.priority-map {:mvn/version "1.1.0"} + instaparse/instaparse {:mvn/version "1.4.10"}} :aliases {:babashka/dev {:main-opts ["-m" "babashka.main"]} :profile diff --git a/project.clj b/project.clj index dbeff965..db6cbeb6 100644 --- a/project.clj +++ b/project.clj @@ -27,7 +27,8 @@ [org.clojure/core.async "1.5.648"] [org.clojure/test.check "1.1.1"] [com.github.clj-easy/graal-build-time "0.1.0"] - [rewrite-clj/rewrite-clj "1.0.699-alpha"]] + [rewrite-clj/rewrite-clj "1.0.699-alpha"] + [instaparse/instaparse "1.4.10"]] :plugins [[org.kipz/lein-meta-bom "0.1.1"]] :metabom {:jar-name "metabom.jar"} :profiles {:feature/xml {:source-paths ["feature-xml"] diff --git a/src/babashka/impl/instaparse.clj b/src/babashka/impl/instaparse.clj new file mode 100644 index 00000000..b83a89f5 --- /dev/null +++ b/src/babashka/impl/instaparse.clj @@ -0,0 +1,17 @@ +(ns babashka.impl.instaparse + (:require [instaparse.core :as insta] + [instaparse.combinators-source :as source] + [sci.core :as sci])) + +(def ins (sci/create-ns 'instaparse.core)) + +(def instaparse-namespace + {'defparser (sci/copy-var insta/defparser ins) + 'map->Parser (sci/copy-var insta/map->Parser ins) + 'parser (sci/copy-var insta/parser ins) + 'transform (sci/copy-var insta/transform ins)}) + +(def sns (sci/create-ns 'instaparse.combinators-source)) + +(def instaparse.combinators-source-namespace + {'regexp (sci/copy-var source/regexp sns)}) diff --git a/src/babashka/main.clj b/src/babashka/main.clj index 6a3cf951..a899e8c5 100644 --- a/src/babashka/main.clj +++ b/src/babashka/main.clj @@ -333,6 +333,8 @@ Use bb run --help to show this help output. (def clojure-main-ns (sci/create-ns 'clojure.main)) +(require 'babashka.impl.instaparse) + (def namespaces (cond-> {'user {'*input* (reify @@ -440,7 +442,11 @@ Use bb run --help to show this help output. 'clojure.tools.logging.readable @(resolve 'babashka.impl.logging/tools-logging-readable-namespace)) features/priority-map? (assoc 'clojure.data.priority-map - @(resolve 'babashka.impl.priority-map/priority-map-namespace)))) + @(resolve 'babashka.impl.priority-map/priority-map-namespace)) + true (assoc 'instaparse.core + @(resolve 'babashka.impl.instaparse/instaparse-namespace) + 'instaparse.combinators-source + @(resolve 'babashka.impl.instaparse/instaparse.combinators-source-namespace)))) (def edn-readers (cond-> {} features/yaml?