Specs
::as
spec
(and simple-symbol? (not= '& %))
::as-alias
spec
simple-symbol?
::binding
spec
(cat :form ::binding-form :init-expr any?)
spec
(or
:local-symbol ::local-name
:seq-destructure ::seq-binding-form
:map-destructure ::map-binding-form)
::bindings
spec
(and vector? even-number-of-forms? (* ::binding))
::class-ident
spec
(or :class simple-symbol? :class-name string?)
::constructors
spec
(map-of ::signature ::signature)
::defn-args
spec
(cat
:fn-name simple-symbol?
:docstring (? string?)
:meta (? map?)
:fn-tail (alt
:arity-1 ::params+body
:arity-n (cat
:bodies (+ (spec ::params+body))
:attr-map (? map?))))
::exclude
spec
(coll-of simple-symbol?)
::expose
spec
(keys :opt-un [::get ::set])
::exposes
spec
(map-of simple-symbol? ::expose)
::extends
spec
simple-symbol?
::factory
spec
simple-symbol?
::filters
spec
(&
(* (cat :clojure.spec.alpha/k keyword? :clojure.spec.alpha/v any?))
:clojure.spec.alpha/kvs->map
mspec__2540__auto__)
::get
spec
simple-symbol?
::impl-ns
spec
simple-symbol?
::implements
spec
(coll-of simple-symbol? :kind vector?)
::import-list
spec
(* (alt :class simple-symbol? :package-list ::package-list))
::keys
spec
(coll-of ident? :kind vector?)
::libspec
spec
(alt
:lib simple-symbol?
:lib+opts (spec
(cat
:lib simple-symbol?
:options (keys* :opt-un [::as ::refer ::as-alias]))))
::load-impl-ns
spec
boolean?
::local-name
spec
(and simple-symbol? (not= '& %))
::map-binding
spec
(tuple ::binding-form any?)
spec
(merge ::map-bindings ::map-special-binding)
::map-bindings
spec
(every
(or
:map-binding ::map-binding
:qualified-keys-or-syms ::ns-keys
:special-binding (tuple #{:as :or :syms :keys :strs} any?))
:kind
map?)
::map-special-binding
spec
(keys :opt-un [::as ::or ::keys ::syms ::strs])
::method
spec
(and
vector?
(cat
:method-name simple-symbol?
:param-types ::signature
:return-type ::class-ident))
::methods
spec
(coll-of ::method :kind vector?)
::name
spec
simple-symbol?
::ns-clauses
spec
(*
(alt
:refer-clojure ::ns-refer-clojure
:require ::ns-require
:import ::ns-import
:use ::ns-use
:refer ::ns-refer
:load ::ns-load
:gen-class ::ns-gen-class))
spec
(cat
:ns-name simple-symbol?
:docstring (? string?)
:attr-map (? map?)
:ns-clauses ::ns-clauses)
::ns-gen-class
spec
(cat
:clause #{:gen-class}
:options (keys*
:opt-un
[::name
::extends
::implements
::init
::constructors
::post-init
::methods
::main
::factory
::state
::exposes
::prefix
::impl-ns
::load-impl-ns]))
::ns-import
spec
(cat :clause #{:import} :classes ::import-list)
::ns-keys
spec
(tuple
(and qualified-keyword? #(-> % name #{"syms" "keys"}))
(coll-of simple-symbol? :kind vector?))
::ns-load
spec
(cat :clause #{:load} :libs (* string?))
::ns-refer
spec
(cat :clause #{:refer} :lib simple-symbol? :refer-filters ::filters)
::ns-refer-clojure
spec
(cat :clause #{:refer-clojure} :refer-filters ::filters)
::ns-require
spec
(cat
:clause #{:require}
:body (+
(alt
:libspec ::libspec
:prefix-list ::prefix-list
:flag #{:verbose :reload :reload-all})))
::ns-use
spec
(cat
:clause #{:use}
:libs (+
(alt
:libspec ::use-libspec
:prefix-list ::use-prefix-list
:flag #{:verbose :reload :reload-all})))
::only
spec
(coll-of simple-symbol?)
::or
spec
(map-of simple-symbol? any?)
::package-list
spec
(cat :package simple-symbol? :classes (+ simple-symbol?))
::param-list
spec
(and
vector?
(cat
:params (* ::binding-form)
:var-params (? (cat :ampersand #{'&} :var-form ::binding-form))))
::params+body
spec
(cat
:params ::param-list
:body (alt
:prepost+body (cat :prepost map? :body (+ any?))
:body (* any?)))
::prefix-list
spec
(cat :prefix simple-symbol? :libspecs (+ ::libspec))
::quotable-import-list
spec
(*
(alt
:class (quotable simple-symbol?)
:package-list (quotable ::package-list)))
::refer
spec
(or :all #{:all} :syms (coll-of simple-symbol?))
::rename
spec
(map-of simple-symbol? simple-symbol?)
spec
(and
vector?
(cat
:forms (* ::binding-form)
:rest-forms (? (cat :ampersand #{'&} :form ::binding-form))
:as-form (? (cat :as #{:as} :as-sym ::local-name))))
::set
spec
simple-symbol?
::signature
spec
(coll-of ::class-ident :kind vector?)
::state
spec
simple-symbol?
::strs
spec
(coll-of simple-symbol? :kind vector?)
::syms
spec
(coll-of symbol? :kind vector?)
::use-libspec
spec
(alt
:lib simple-symbol?
:lib+opts (spec
(cat
:lib simple-symbol?
:options (keys*
:opt-un
[::as ::refer ::exclude ::only ::rename]))))
::use-prefix-list
spec
(cat :prefix simple-symbol? :libspecs (+ ::use-libspec))