diff --git a/CHANGELOG.md b/CHANGELOG.md index e14a587f..8ff814b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ A preview of the next release can be installed from ## Unreleased - Fix [#1688](https://github.com/babashka/babashka/issues/1688): use-fixtures should add metadata to `*ns*` +- Fix [#1692](https://github.com/babashka/babashka/issues/1692): Add support for ITransientSet and org.flatland/ordered-set ## 1.3.190 (2024-04-17) diff --git a/feature-yaml/babashka/impl/ordered.clj b/feature-yaml/babashka/impl/ordered.clj index a0c87a97..bdb9c7b3 100644 --- a/feature-yaml/babashka/impl/ordered.clj +++ b/feature-yaml/babashka/impl/ordered.clj @@ -1,9 +1,14 @@ (ns babashka.impl.ordered {:no-doc true} (:require [flatland.ordered.map :as omap] + [flatland.ordered.set :as oset] [sci.core :as sci])) (def omap-ns (sci/create-ns 'flatland.ordered.map nil)) +(def oset-ns (sci/create-ns 'flatland.ordered.set nil)) (def ordered-map-ns {'ordered-map (sci/copy-var omap/ordered-map omap-ns)}) + +(def ordered-set-ns + {'ordered-set (sci/copy-var oset/ordered-set oset-ns)}) diff --git a/src/babashka/impl/classes.clj b/src/babashka/impl/classes.clj index 2b552cb5..4a0889d7 100644 --- a/src/babashka/impl/classes.clj +++ b/src/babashka/impl/classes.clj @@ -600,6 +600,7 @@ clojure.lang.IRef clojure.lang.ISeq clojure.lang.IPersistentVector + clojure.lang.ITransientSet clojure.lang.ITransientVector clojure.lang.Iterate clojure.lang.LispReader$Resolver diff --git a/src/babashka/main.clj b/src/babashka/main.clj index f02ebdd8..86dec93a 100644 --- a/src/babashka/main.clj +++ b/src/babashka/main.clj @@ -427,7 +427,8 @@ Use bb run --help to show this help output. 'clojure.data.xml.event @(resolve 'babashka.impl.xml/xml-event-namespace) 'clojure.data.xml.tree @(resolve 'babashka.impl.xml/xml-tree-namespace)) features/yaml? (assoc 'clj-yaml.core @(resolve 'babashka.impl.yaml/yaml-namespace) - 'flatland.ordered.map @(resolve 'babashka.impl.ordered/ordered-map-ns)) + 'flatland.ordered.map @(resolve 'babashka.impl.ordered/ordered-map-ns) + 'flatland.ordered.set @(resolve 'babashka.impl.ordered/ordered-set-ns)) features/jdbc? (assoc 'next.jdbc @(resolve 'babashka.impl.jdbc/njdbc-namespace) 'next.jdbc.sql @(resolve 'babashka.impl.jdbc/next-sql-namespace) 'next.jdbc.result-set @(resolve 'babashka.impl.jdbc/result-set-namespace)) @@ -487,7 +488,8 @@ Use bb run --help to show this help output. (def edn-readers (cond-> {} features/yaml? - (assoc 'ordered/map @(resolve 'flatland.ordered.map/ordered-map)) + (assoc 'ordered/map @(resolve 'flatland.ordered.map/ordered-map) + 'ordered/set @(resolve 'flatland.ordered.set/ordered-set)) features/xml? (assoc 'xml/ns @(resolve 'clojure.data.xml.name/uri-symbol) 'xml/element @(resolve 'clojure.data.xml.node/tagged-element)))) diff --git a/test/babashka/main_test.clj b/test/babashka/main_test.clj index 3ee6ab1b..b6e62947 100644 --- a/test/babashka/main_test.clj +++ b/test/babashka/main_test.clj @@ -10,6 +10,7 @@ [clojure.string :as str] [clojure.test :as test :refer [deftest is testing]] [flatland.ordered.map :refer [ordered-map]] + [flatland.ordered.set :refer [ordered-set]] [sci.core :as sci])) (defn bb [input & args] @@ -632,7 +633,8 @@ (is (= 2 (bb nil "(set! *data-readers* {'t/tag inc}) #t/tag 1")))) (deftest ordered-test - (is (= (ordered-map :a 1 :b 2) (bb nil "(flatland.ordered.map/ordered-map :a 1 :b 2)")))) + (is (= (ordered-map :a 1 :b 2) (bb nil "(flatland.ordered.map/ordered-map :a 1 :b 2)"))) + (is (= (ordered-set :a 1 :b 2) (bb nil "(flatland.ordered.set/ordered-set :a 1 :b 2)")))) (deftest data-diff-test (is (= [[nil 1] [nil 2] [1 nil 2]] (bb nil "(require '[clojure.data :as d]) (d/diff [1 1 2] [1 2 2])"))))