From fc01040fa1f6028664d224d4cfe0e9cddbe01bd9 Mon Sep 17 00:00:00 2001 From: Andrew Foltz-Morrison Date: Sat, 5 Jul 2025 10:16:55 -0400 Subject: [PATCH 1/2] Add :wrapped-value annotation to :kindly/options metadata for wrapped vals This ensures that wrapped values produced from Kindly APIs will be consistently distinguishable from single-element vectors annotated with Kindly metadata --- src/scicloj/kindly/v4/api.cljc | 4 +++- test/scicloj/kindly/v4/api_test.cljc | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/scicloj/kindly/v4/api.cljc b/src/scicloj/kindly/v4/api.cljc index 4ffdf8a..bf4579e 100644 --- a/src/scicloj/kindly/v4/api.cljc +++ b/src/scicloj/kindly/v4/api.cljc @@ -5,7 +5,9 @@ [value m] (if (instance? clojure.lang.IObj value) (vary-meta value merge m) - (attach-meta-to-value [value] m))) + (attach-meta-to-value + [value] + (update m :kindly/options assoc :wrapped-value true)))) (defn attach-kind-to-value [value kind] diff --git a/test/scicloj/kindly/v4/api_test.cljc b/test/scicloj/kindly/v4/api_test.cljc index 98e21b3..300bab7 100644 --- a/test/scicloj/kindly/v4/api_test.cljc +++ b/test/scicloj/kindly/v4/api_test.cljc @@ -32,6 +32,10 @@ {:b 2}))) (deftest options-test + (is (get-in (meta (kindly/attach-meta-to-value 4 {:kindly/kind :code})) + [:kindly/options :wrapped-value]) + "wrapped values should have annotations in metadata") + (kindly/set-options! {:foo "bar"}) (is (= "bar" (-> (kindly/get-options) :foo)) "setting options should work") From d1a119dfad48f70621adf4888919f1d583c3225a Mon Sep 17 00:00:00 2001 From: Andrew Foltz-Morrison Date: Sat, 5 Jul 2025 10:30:46 -0400 Subject: [PATCH 2/2] Add test for metadata of wrapped values vs single-element vectors --- test/scicloj/kindly/v4/api_test.cljc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/test/scicloj/kindly/v4/api_test.cljc b/test/scicloj/kindly/v4/api_test.cljc index 300bab7..0b6ac5d 100644 --- a/test/scicloj/kindly/v4/api_test.cljc +++ b/test/scicloj/kindly/v4/api_test.cljc @@ -36,6 +36,10 @@ [:kindly/options :wrapped-value]) "wrapped values should have annotations in metadata") +(is (not= (meta (kindly/attach-meta-to-value 4 {:kindly/kind :code})) + (meta (kindly/attach-meta-to-value [4] {:kindly/kind :code}))) + "wrapped values should be distinguishable from single-element vectors") + (kindly/set-options! {:foo "bar"}) (is (= "bar" (-> (kindly/get-options) :foo)) "setting options should work")