Add ITransientSet and org.flatland/ordered-set

This commit is contained in:
Noah Bogart 2024-05-13 11:00:21 -04:00
parent 6d4737ce77
commit 59cd6a829a
6 changed files with 28 additions and 7 deletions

View file

@ -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)

View file

@ -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
(def ordered-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)})

View file

@ -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

View file

@ -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))))

View file

@ -50,7 +50,8 @@
(do (write {"format" (if (= format :json)
"json"
"edn")
"readers" {"ordered/map" "flatland.ordered.map/ordered-map"}
"readers" {"ordered/map" "flatland.ordered.map/ordered-map"
"ordered/set" "flatland.ordered.set/ordered-set"}
"namespaces"
[{"name" "pod.test-pod"
"vars" [{"name" "add-sync"}
@ -64,7 +65,8 @@
{"name" "error"}
{"name" "print"}
{"name" "print-err"}
{"name" "ordered-map"}]}]
{"name" "ordered-map"}
{"name" "ordered-set"}]}]
"ops" {"shutdown" {}}})
(recur))
:invoke (let [var (-> (get message "var")
@ -119,6 +121,11 @@
pod.test-pod/ordered-map
(write
{"value" "#ordered/map([:a 1] [:b 2])"
"status" ["done"]
"id" id})
pod.test-pod/ordered-set
(write
{"value" "#ordered/set([:a 1 :b 2])"
"status" ["done"]
"id" id}))
(recur))
@ -159,4 +166,7 @@
(debug "Running reader test")
(require '[flatland.ordered.map :refer [ordered-map]])
(prn (= ((resolve 'flatland.ordered.map/ordered-map) :a 1 :b 2)
((resolve 'pod.test-pod/ordered-map)))))))))
((resolve 'pod.test-pod/ordered-map))))
(require '[flatland.ordered.set :refer [ordered-set]])
(prn (= ((resolve 'flatland.ordered.set/ordered-set) :a 1 :b 2)
((resolve 'pod.test-pod/ordered-set)))))))))

View file

@ -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.map/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])"))))