This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2019-01-24
Channels
- # announcements (4)
- # beginners (37)
- # boot (13)
- # boot-dev (3)
- # calva (122)
- # cider (16)
- # clara (13)
- # cljs-dev (3)
- # cljsrn (8)
- # clojure (311)
- # clojure-denver (1)
- # clojure-dev (14)
- # clojure-europe (7)
- # clojure-italy (36)
- # clojure-nl (3)
- # clojure-spec (11)
- # clojure-uk (77)
- # clojurescript (91)
- # core-async (10)
- # cursive (9)
- # data-science (5)
- # datomic (46)
- # devcards (2)
- # emacs (6)
- # figwheel-main (15)
- # fulcro (51)
- # jobs (3)
- # kaocha (10)
- # nrepl (6)
- # off-topic (53)
- # om (1)
- # onyx (2)
- # pathom (5)
- # reagent (50)
- # reitit (26)
- # shadow-cljs (153)
- # spacemacs (17)
- # specter (5)
- # speculative (1)
- # test-check (19)
- # tools-deps (15)
- # yada (3)
I'm trying to write a spec for a map that satisfies two keys specs.
(s/def ::a string?)
(s/def ::b string?)
(s/def ::a-map (s/keys :req [::a]))
(s/def ::b-map (s/keys :req [::b]))
;; Satisfies both specs
(s/def ::a-and-b (s/and ::a-map ::b-map))
;; Extend an existing spec
(s/def ::another string?)
(s/def ::a-extended
(s/and ::a (s/keys :req [::another])))
But generation obviously fails. Is there a way to do this that produces a good generator?
Perhaps using the and
section in s/keys
?
(s/keys :req [::x ::y (or ::secret (and ::user ::pwd))] :opt [::z])
s/merge
Itβs designed to merge multiple s/keys
specs.
Thank you very much @seancorfield, it seems to be the perfect tool for the job.
How can I spec a map where the keywords can be anything (basically IDs in this case) but I do know what I want the values to be
@victorbjelkholm429 what about (s/map-of any? #{:value1 :value2})