(defn
nonconforming
"takes a spec and returns a spec that has the same properties except\n 'conform' returns the original (not the conformed) value. Note, will specize regex ops."
[spec]
(let
[spec (specize spec)]
(reify
Specize
(specize* [s] s)
(specize* [s _] s)
Spec
(conform*
[_ x]
(let
[ret (conform* spec x)]
(if (invalid? ret) :clojure.core/invalid x)))
(unform* [_ x] (unform* spec x))
(explain* [_ path via in x] (explain* spec path via in x))
(gen* [_ overrides path rmap] (gen* spec overrides path rmap))
(with-gen* [_ gfn] (nonconforming (with-gen* spec gfn)))
(describe*
[_]
(clojure.core/sequence
(clojure.core/seq
(clojure.core/concat
(clojure.core/list 'clojure.core/nonconforming)
(clojure.core/list (describe* spec)))))))))