spec.clj
Branches > main > a2c763c > files / src / dev / grahp / spec.clj
(ns dev.grahp.spec
(:refer-clojure :exclude [def])
(:require
[clojure.alpha.spec :as s]
[dev.grahp.error :refer [raise]]))
(defn ensure-conform [spec x]
(if (s/valid? spec x)
(s/conform spec x)
(raise "Failed to conform value to spec!" {:spec spec :x x})))
(defmacro def
"Same as clojure.alpha.spec/def but allows for a docstring seriously how does spec def not have a docstring???"
{:clj-kondo/lint-as 'clojure.spec.alpha/def}
([name spec] `(s/def ~name ~spec))
([name _docstring spec] `(s/def ~name ~spec)))