Liking cljdoc? Tell your friends :D

spec-tools.core


coerceclj/s

(coerce spec value transformer)
(coerce spec value transformer options)

Coerces the value using a Transformer. Returns original value for those parts of the value that can't be trasformed.

Coerces the value using a [[Transformer]]. Returns original value for
those parts of the value that can't be trasformed.
raw docstring

Coercionclj/sprotocol

-coerceclj/s

(-coerce this value transformer options)

conformclj/s

(conform spec value)
(conform spec value transformer)

Given a spec and a value, returns the possibly destructured value or ::s/invalid

Given a spec and a value, returns the possibly destructured value
or ::s/invalid
raw docstring

conform!clj/s

(conform! spec value)
(conform! spec value transformer)

Given a spec and a value, returns the possibly destructured value or fails with ex-info with :type of ::conform. ex-data also contains :problems, :spec and :value. call s/unform on the result to get the actual conformed value.

Given a spec and a value, returns the possibly destructured value
or fails with ex-info with :type of ::conform. ex-data also contains
:problems, :spec and :value. call s/unform on the result to get the
actual conformed value.
raw docstring

create-specclj/s

(create-spec {:keys [spec type form] :as m})

Creates a Spec instance from a map containing the following keys:

   :spec  the wrapped spec predicate (default to `any?`)
   :form  source code of the spec predicate, if :spec is a spec,
          :form is read with `s/form` out of it. For non-spec
          preds, spec-tools.form/resolve-form is called, if still
          not available, spec-creation will fail.
   :type  optional type for the spec. if not set, will be auto-
          resolved via spec-tools.parse/parse-spec (optional)
 :reason  reason to be added to problems with s/explain (optional)
    :gen  generator function for the spec (optional)
   :name  name of the spec (optional)

:description description of the spec (optional) :xx/yy any qualified keys can be added (optional)

Creates a Spec instance from a map containing the following keys:

       :spec  the wrapped spec predicate (default to `any?`)
       :form  source code of the spec predicate, if :spec is a spec,
              :form is read with `s/form` out of it. For non-spec
              preds, spec-tools.form/resolve-form is called, if still
              not available, spec-creation will fail.
       :type  optional type for the spec. if not set, will be auto-
              resolved via spec-tools.parse/parse-spec (optional)
     :reason  reason to be added to problems with s/explain (optional)
        :gen  generator function for the spec (optional)
       :name  name of the spec (optional)
:description  description of the spec (optional)
      :xx/yy  any qualified keys can be added (optional)
raw docstring

decodeclj/s

(decode spec value)
(decode spec value transformer)
(decode spec value transformer spec-transformed)

Decodes a value using a Transformer from external format to a value defined by the spec. First, calls coerce and returns the value if it's valid - otherwise, calls conform & [[unform]]. You can also provide a spec to validate the decoded value after transformation. Returns ::s/invalid if the value can't be decoded to conform the spec.

Decodes a value using a [[Transformer]] from external format to a value
defined by the spec. First, calls [[coerce]] and returns the value if it's
valid - otherwise, calls [[conform]] & [[unform]]. You can also provide a
spec to validate the decoded value after transformation. Returns `::s/invalid`
if the value can't be decoded to conform the spec.
raw docstring

encodeclj/s

(encode spec value transformer)
(encode spec value transformer spec-transformed)

Transforms a value (using a Transformer) from external format into a value defined by the spec. You can also provide a spec to validate the encoded value after transformation. On error, returns ::s/invalid.

Transforms a value (using a [[Transformer]]) from external
format into a value defined by the spec. You can also provide a
spec to validate the encoded value after transformation.
On error, returns `::s/invalid`.
raw docstring

explainclj/s

(explain spec value)
(explain spec value transformer)

Like clojure.core.alpha/explain but supports transformers

Like `clojure.core.alpha/explain` but supports transformers
raw docstring

explain-dataclj/s

(explain-data spec value)
(explain-data spec value transformer)

Like clojure.core.alpha/explain-data but supports transformers

Like `clojure.core.alpha/explain-data` but supports transformers
raw docstring

fail-on-extra-keys-transformerclj/s

Transformer that fails on extra keys in s/keys specs.

Transformer that fails on extra keys in `s/keys` specs.
raw docstring

json-transformerclj/s

Transformer that transforms data between JSON and EDN.

Transformer that transforms data between JSON and EDN.
raw docstring

mergeclj/smacro

(merge & forms)

select-specclj/s

(select-spec spec value)

Best effort to drop recursively all extra keys out of a keys spec value.

Best effort to drop recursively all extra keys out of a keys spec value.
raw docstring

specclj/smacro

(spec pred-or-info)
(spec pred info)

Creates a Spec instance with one or two arguments:

;; using type inference (spec integer?)

;; with explicit type (spec integer? {:type :long})

;; map form (spec {:spec integer?, :type :long})

calls create-spec, see it for details.

Creates a Spec instance with one or two arguments:

;; using type inference
(spec integer?)

;; with explicit type
(spec integer? {:type :long})

;; map form
(spec {:spec integer?, :type :long})

calls `create-spec`, see it for details.
raw docstring

spec-descriptionclj/s

(spec-description spec)

Returns a spec description.

Returns a spec description.
raw docstring

spec-nameclj/s

(spec-name spec)

Returns a spec name. Like the private clojure.spec.alpha/spec-name

Returns a spec name. Like the private clojure.spec.alpha/spec-name
raw docstring

spec?clj/s

(spec? x)

string-transformerclj/s

Transformer that transforms data between Strings and EDN.

Transformer that transforms data between Strings and EDN.
raw docstring

strip-extra-keys-transformerclj/s

Transformer that drop extra keys from s/keys specs.

Transformer that drop extra keys from `s/keys` specs.
raw docstring

strip-extra-values-transformerclj/s

Transformer that drop extra values from s/tuple specs.

Transformer that drop extra values from `s/tuple` specs.
raw docstring

Transformerclj/sprotocol

-decoderclj/s

(-decoder this spec value)

-encoderclj/s

(-encoder this spec value)

-nameclj/s

(-name this)

-optionsclj/s

(-options this)

type-transformerclj/s

(type-transformer & options-or-transformers)

Returns a Transformer instance out of options map or Transformer instances. Available options:

KeyDescription
:nameName of the transformer
:encodersMap of type type -> transform
:decodersMap of type type -> transform
:default-encoderDefault transform for encoding
:default-decoderDefault transform for decoding

Example of a JSON type-transformer:

(require '[spec-tools.core :as st])
(require '[spec-tools.transform :as stt])

(def json-transformer
  (type-transformer
    {:name :json
     :decoders stt/json-type-decoders
     :encoders stt/json-type-encoders
     :default-encoder stt/any->any}))

Composed Strict JSON Transformer:

(def strict-json-transformer
  (st/type-transformer
    st/json-transformer
    st/strip-extra-keys-transformer
    st/strip-extra-values-transformer))
Returns a Transformer instance out of options map or Transformer instances.
Available options:

| Key                | Description
|--------------------|-----------------
| `:name`            | Name of the transformer
| `:encoders`        | Map of type `type -> transform`
| `:decoders`        | Map of type `type -> transform`
| `:default-encoder` | Default `transform` for encoding
| `:default-decoder` | Default `transform` for decoding

Example of a JSON type-transformer:

```clojure
(require '[spec-tools.core :as st])
(require '[spec-tools.transform :as stt])

(def json-transformer
  (type-transformer
    {:name :json
     :decoders stt/json-type-decoders
     :encoders stt/json-type-encoders
     :default-encoder stt/any->any}))
```

Composed Strict JSON Transformer:

```clojure
(def strict-json-transformer
  (st/type-transformer
    st/json-transformer
    st/strip-extra-keys-transformer
    st/strip-extra-values-transformer))
```
raw docstring

walkclj/smultimethod

cljdoc is a website building & hosting documentation for Clojure/Script libraries

× close