about summary refs log tree commit diff
path: root/users/aspen/bbbg/src/bbbg/util/spec.clj
diff options
context:
space:
mode:
Diffstat (limited to 'users/aspen/bbbg/src/bbbg/util/spec.clj')
-rw-r--r--users/aspen/bbbg/src/bbbg/util/spec.clj16
1 files changed, 16 insertions, 0 deletions
diff --git a/users/aspen/bbbg/src/bbbg/util/spec.clj b/users/aspen/bbbg/src/bbbg/util/spec.clj
new file mode 100644
index 0000000000..89ac926699
--- /dev/null
+++ b/users/aspen/bbbg/src/bbbg/util/spec.clj
@@ -0,0 +1,16 @@
+(ns bbbg.util.spec
+  (:require [expound.alpha :as exp]
+            [clojure.spec.alpha :as s]))
+
+(defn assert!
+  ([spec s] (assert! "Spec assertion failed" spec s))
+  ([message spec x]
+   (if (s/valid? spec x)
+     x
+     (throw (ex-info
+             (str message
+                  "\n"
+                  (exp/expound-str spec x))
+             (assoc (s/explain-data spec x)
+                    ::s/failure
+                    ::s/assertion-failed))))))