CLJS
basic-lein-cljs.core
cljs.analyzer
cljs.compiler
CLJS
cljs.core
CLJS
cljs.core.async
CLJS
cljs.core.async.impl.buffers
CLJS
cljs.core.async.impl.channels
CLJS
cljs.core.async.impl.dispatch
CLJS
cljs.core.async.impl.ioc-helpers
CLJS
cljs.core.async.impl.protocols
CLJS
cljs.core.async.impl.timers
cljs.env
cljs.externs
CLJS
cljs.js
cljs.js-deps
CLJS
cljs.pprint
CLJS
cljs.reader
CLJS
cljs.repl
cljs.source-map
CLJS
cljs.source-map
cljs.source-map.base64
CLJS
cljs.source-map.base64
cljs.source-map.base64-vlq
CLJS
cljs.source-map.base64-vlq
CLJS
cljs.spec.alpha
CLJS
cljs.spec.gen.alpha
cljs.tagged-literals
CLJS
cljs.tools.reader
CLJS
cljs.tools.reader.edn
CLJS
cljs.tools.reader.impl.commons
CLJS
cljs.tools.reader.impl.errors
CLJS
cljs.tools.reader.impl.inspect
CLJS
cljs.tools.reader.impl.utils
CLJS
cljs.tools.reader.reader-types
cljs.util
clojure.core
clojure.core.async
clojure.core.async.impl.buffers
clojure.core.async.impl.channels
clojure.core.async.impl.concurrent
clojure.core.async.impl.dispatch
clojure.core.async.impl.exec.threadpool
clojure.core.async.impl.ioc-macros
clojure.core.async.impl.mutex
clojure.core.async.impl.protocols
clojure.core.async.impl.timers
clojure.core.cache
clojure.core.memoize
clojure.core.protocols
clojure.core.server
clojure.data.json
clojure.data.priority-map
clojure.edn
clojure.instant
clojure.java.io
clojure.main
clojure.pprint
clojure.reflect
clojure.repl
clojure.set
CLJS
clojure.set
clojure.spec.alpha
clojure.spec.gen.alpha
clojure.string
CLJS
clojure.string
clojure.tools.analyzer
clojure.tools.analyzer.ast
clojure.tools.analyzer.env
clojure.tools.analyzer.jvm
clojure.tools.analyzer.jvm.utils
clojure.tools.analyzer.passes
clojure.tools.analyzer.passes.add-binding-atom
clojure.tools.analyzer.passes.cleanup
clojure.tools.analyzer.passes.constant-lifter
clojure.tools.analyzer.passes.elide-meta
clojure.tools.analyzer.passes.emit-form
clojure.tools.analyzer.passes.jvm.analyze-host-expr
clojure.tools.analyzer.passes.jvm.annotate-host-info
clojure.tools.analyzer.passes.jvm.annotate-loops
clojure.tools.analyzer.passes.jvm.annotate-tag
clojure.tools.analyzer.passes.jvm.box
clojure.tools.analyzer.passes.jvm.classify-invoke
clojure.tools.analyzer.passes.jvm.constant-lifter
clojure.tools.analyzer.passes.jvm.emit-form
clojure.tools.analyzer.passes.jvm.fix-case-test
clojure.tools.analyzer.passes.jvm.infer-tag
clojure.tools.analyzer.passes.jvm.validate
clojure.tools.analyzer.passes.jvm.validate-loop-locals
clojure.tools.analyzer.passes.jvm.validate-recur
clojure.tools.analyzer.passes.jvm.warn-on-reflection
clojure.tools.analyzer.passes.source-info
clojure.tools.analyzer.passes.trim
clojure.tools.analyzer.passes.uniquify
clojure.tools.analyzer.passes.warn-earmuff
clojure.tools.analyzer.utils
clojure.tools.cli
clojure.tools.namespace.dependency
clojure.tools.namespace.file
clojure.tools.namespace.find
clojure.tools.namespace.parse
clojure.tools.namespace.track
clojure.tools.reader
clojure.tools.reader.default-data-readers
clojure.tools.reader.impl.commons
clojure.tools.reader.impl.errors
clojure.tools.reader.impl.inspect
clojure.tools.reader.impl.utils
clojure.tools.reader.reader-types
clojure.walk
CLJS
clojure.walk
dynadoc.aliases
dynadoc.common
dynadoc.core
CLJS
dynadoc.core
dynadoc.example
CLJS
dynadoc.state
dynadoc.static
dynadoc.utils
dynadoc.watch
eval-soup.clojail
eval-soup.core
CLJS
eval-soup.core
CLJS
figwheel.client
CLJS
figwheel.client.file-reloading
CLJS
figwheel.client.heads-up
CLJS
figwheel.client.socket
CLJS
figwheel.client.utils
hawk.core
hawk.watcher
html-soup.core
ns-tracker.core
ns-tracker.dependency
ns-tracker.nsdeps
ns-tracker.parse
CLJS
oakcljs.tools.reader
CLJS
oakcljs.tools.reader.impl.commons
CLJS
oakcljs.tools.reader.impl.errors
CLJS
oakcljs.tools.reader.impl.inspect
CLJS
oakcljs.tools.reader.impl.utils
CLJS
oakcljs.tools.reader.reader-types
oakclojure.tools.reader
oakclojure.tools.reader.default-data-readers
oakclojure.tools.reader.impl.commons
oakclojure.tools.reader.impl.errors
oakclojure.tools.reader.impl.inspect
oakclojure.tools.reader.impl.utils
oakclojure.tools.reader.reader-types
org.httpkit.server
CLJS
paren-soup.console
CLJS
paren-soup.core
CLJS
paren-soup.dom
CLJS
paren-soup.instarepl
CLJS
reagent.core
CLJS
reagent.debug
CLJS
reagent.dom
CLJS
reagent.impl.batching
CLJS
reagent.impl.component
CLJS
reagent.impl.template
CLJS
reagent.impl.util
CLJS
reagent.ratom
ring.middleware.content-type
ring.middleware.file
ring.middleware.head
ring.middleware.keyword-params
ring.middleware.params
ring.middleware.reload
ring.middleware.resource
ring.util.codec
ring.util.io
ring.util.mime-type
ring.util.parsing
ring.util.request
ring.util.response
ring.util.time
rum.core
CLJS
rum.core
rum.cursor
rum.derived-atom
rum.server-render
rum.util
sablono.compiler
CLJS
sablono.core
sablono.normalize
sablono.util
tag-soup.core

(every-impl form pred opts)

(every-impl form pred {conform-into :into, describe-form :clojure.spec.alpha/describe, :keys [kind :clojure.spec.alpha/kind-form count max-count min-count distinct gen-max :clojure.spec.alpha/kfn :clojure.spec.alpha/cpred conform-keys :clojure.spec.alpha/conform-all], :or {gen-max 20}, :as opts} gfn)

Do not call this directly, use 'every', 'every-kv', 'coll-of' or 'map-of'

Source

(defn ^:skip-wiki every-impl "Do not call this directly, use 'every', 'every-kv', 'coll-of' or 'map-of'" ([form pred opts] (every-impl form pred opts nil)) ([form pred {conform-into :into describe-form ::describe :keys [kind ::kind-form count max-count min-count distinct gen-max ::kfn ::cpred conform-keys ::conform-all] :or {gen-max 20} :as opts} gfn] (let [gen-into (if conform-into (empty conform-into) (get empty-coll kind-form)) spec (delay (specize pred)) check? #(valid? @spec %) kfn (c/or kfn (fn [i v] i)) addcv (fn [ret i v cv] (conj ret cv)) cfns (fn [x] ;;returns a tuple of [init add complete] fns (cond (c/and (vector? x) (c/or (not conform-into) (vector? conform-into))) [identity (fn [ret i v cv] (if (identical? v cv) ret (assoc ret i cv))) identity] (c/and (map? x) (c/or (c/and kind (not conform-into)) (map? conform-into))) [(if conform-keys empty identity) (fn [ret i v cv] (if (c/and (identical? v cv) (not conform-keys)) ret (assoc ret (nth (if conform-keys cv v) 0) (nth cv 1)))) identity] (c/or (list? conform-into) (seq? conform-into) (c/and (not conform-into) (c/or (list? x) (seq? x)))) [(constantly ()) addcv reverse] :else [#(empty (c/or conform-into %)) addcv identity]))] (reify Specize (specize* [s] s) (specize* [s _] s) Spec (conform* [_ x] (let [spec @spec] (cond (not (cpred x)) ::invalid conform-all (let [[init add complete] (cfns x)] (loop [ret (init x), i 0, [v & vs :as vseq] (seq x)] (if vseq (let [cv (conform* spec v)] (if (invalid? cv) ::invalid (recur (add ret i v cv) (inc i) vs))) (complete ret)))) :else (if (indexed? x) (let [step (max 1 (long (/ (c/count x) *coll-check-limit*)))] (loop [i 0] (if (>= i (c/count x)) x (if (valid? spec (nth x i)) (recur (c/+ i step)) ::invalid)))) (let [limit *coll-check-limit*] (loop [i 0 [v & vs :as vseq] (seq x)] (cond (c/or (nil? vseq) (= i limit)) x (valid? spec v) (recur (inc i) vs) :else ::invalid))))))) (unform* [_ x] (if conform-all (let [spec @spec [init add complete] (cfns x)] (loop [ret (init x), i 0, [v & vs :as vseq] (seq x)] (if (>= i (c/count x)) (complete ret) (recur (add ret i v (unform* spec v)) (inc i) vs)))) x)) (explain* [_ path via in x] (c/or (coll-prob x kind kind-form distinct count min-count max-count path via in) (apply concat ((if conform-all identity (partial take *coll-error-limit*)) (keep identity (map (fn [i v] (let [k (kfn i v)] (when-not (check? v) (let [prob (explain-1 form pred path via (conj in k) v)] prob)))) (range) x)))))) (gen* [_ overrides path rmap] (if gfn (gfn) (let [pgen (gensub pred overrides path rmap form)] (gen/bind (cond gen-into (gen/return gen-into) kind (gen/fmap #(if (empty? %) % (empty %)) (gensub kind overrides path rmap form)) :else (gen/return [])) (fn [init] (gen/fmap #(if (vector? init) % (into init %)) (cond distinct (if count (gen/vector-distinct pgen {:num-elements count :max-tries 100}) (gen/vector-distinct pgen {:min-elements (c/or min-count 0) :max-elements (c/or max-count (max gen-max (c/* 2 (c/or min-count 0)))) :max-tries 100})) count (gen/vector pgen count) (c/or min-count max-count) (gen/vector pgen (c/or min-count 0) (c/or max-count (max gen-max (c/* 2 (c/or min-count 0))))) :else (gen/vector pgen 0 gen-max)))))))) (with-gen* [_ gfn] (every-impl form pred opts gfn)) (describe* [_] (c/or describe-form `(every ~(res form) ~@(mapcat identity opts))))))))