macrovich
Version:
A set of three macros to ease writing `*.cljc` supporting Clojure, Clojurescript and self-hosted Clojurescript.
1,356 lines (1,234 loc) • 250 kB
JavaScript
// Compiled by ClojureScript 1.9.369 {:target :nodejs}
goog.provide('cljs.spec');
goog.require('cljs.core');
goog.require('cljs.core');
goog.require('goog.object');
goog.require('clojure.walk');
goog.require('cljs.spec.impl.gen');
goog.require('clojure.string');
cljs.spec.MAX_INT = (9007199254740991);
/**
* A soft limit on how many times a branching spec (or/alt/* /opt-keys/multi-spec)
* can be recursed through during generation. After this a
* non-recursive branch will be chosen.
*/
cljs.spec._STAR_recursion_limit_STAR_ = (4);
/**
* The number of times an anonymous fn specified by fspec will be (generatively) tested during conform
*/
cljs.spec._STAR_fspec_iterations_STAR_ = (21);
/**
* The number of items validated in a collection spec'ed with 'every'
*/
cljs.spec._STAR_coll_check_limit_STAR_ = (101);
/**
* The number of errors reported by explain in a collection spec'ed with 'every'
*/
cljs.spec._STAR_coll_error_limit_STAR_ = (20);
/**
* @interface
*/
cljs.spec.Spec = function(){};
cljs.spec.conform_STAR_ = (function cljs$spec$conform_STAR_(spec,x){
if((!((spec == null))) && (!((spec.cljs$spec$Spec$conform_STAR_$arity$2 == null)))){
return spec.cljs$spec$Spec$conform_STAR_$arity$2(spec,x);
} else {
var x__8981__auto__ = (((spec == null))?null:spec);
var m__8982__auto__ = (cljs.spec.conform_STAR_[goog.typeOf(x__8981__auto__)]);
if(!((m__8982__auto__ == null))){
return m__8982__auto__.call(null,spec,x);
} else {
var m__8982__auto____$1 = (cljs.spec.conform_STAR_["_"]);
if(!((m__8982__auto____$1 == null))){
return m__8982__auto____$1.call(null,spec,x);
} else {
throw cljs.core.missing_protocol.call(null,"Spec.conform*",spec);
}
}
}
});
cljs.spec.unform_STAR_ = (function cljs$spec$unform_STAR_(spec,y){
if((!((spec == null))) && (!((spec.cljs$spec$Spec$unform_STAR_$arity$2 == null)))){
return spec.cljs$spec$Spec$unform_STAR_$arity$2(spec,y);
} else {
var x__8981__auto__ = (((spec == null))?null:spec);
var m__8982__auto__ = (cljs.spec.unform_STAR_[goog.typeOf(x__8981__auto__)]);
if(!((m__8982__auto__ == null))){
return m__8982__auto__.call(null,spec,y);
} else {
var m__8982__auto____$1 = (cljs.spec.unform_STAR_["_"]);
if(!((m__8982__auto____$1 == null))){
return m__8982__auto____$1.call(null,spec,y);
} else {
throw cljs.core.missing_protocol.call(null,"Spec.unform*",spec);
}
}
}
});
cljs.spec.explain_STAR_ = (function cljs$spec$explain_STAR_(spec,path,via,in$,x){
if((!((spec == null))) && (!((spec.cljs$spec$Spec$explain_STAR_$arity$5 == null)))){
return spec.cljs$spec$Spec$explain_STAR_$arity$5(spec,path,via,in$,x);
} else {
var x__8981__auto__ = (((spec == null))?null:spec);
var m__8982__auto__ = (cljs.spec.explain_STAR_[goog.typeOf(x__8981__auto__)]);
if(!((m__8982__auto__ == null))){
return m__8982__auto__.call(null,spec,path,via,in$,x);
} else {
var m__8982__auto____$1 = (cljs.spec.explain_STAR_["_"]);
if(!((m__8982__auto____$1 == null))){
return m__8982__auto____$1.call(null,spec,path,via,in$,x);
} else {
throw cljs.core.missing_protocol.call(null,"Spec.explain*",spec);
}
}
}
});
cljs.spec.gen_STAR_ = (function cljs$spec$gen_STAR_(spec,overrides,path,rmap){
if((!((spec == null))) && (!((spec.cljs$spec$Spec$gen_STAR_$arity$4 == null)))){
return spec.cljs$spec$Spec$gen_STAR_$arity$4(spec,overrides,path,rmap);
} else {
var x__8981__auto__ = (((spec == null))?null:spec);
var m__8982__auto__ = (cljs.spec.gen_STAR_[goog.typeOf(x__8981__auto__)]);
if(!((m__8982__auto__ == null))){
return m__8982__auto__.call(null,spec,overrides,path,rmap);
} else {
var m__8982__auto____$1 = (cljs.spec.gen_STAR_["_"]);
if(!((m__8982__auto____$1 == null))){
return m__8982__auto____$1.call(null,spec,overrides,path,rmap);
} else {
throw cljs.core.missing_protocol.call(null,"Spec.gen*",spec);
}
}
}
});
cljs.spec.with_gen_STAR_ = (function cljs$spec$with_gen_STAR_(spec,gfn){
if((!((spec == null))) && (!((spec.cljs$spec$Spec$with_gen_STAR_$arity$2 == null)))){
return spec.cljs$spec$Spec$with_gen_STAR_$arity$2(spec,gfn);
} else {
var x__8981__auto__ = (((spec == null))?null:spec);
var m__8982__auto__ = (cljs.spec.with_gen_STAR_[goog.typeOf(x__8981__auto__)]);
if(!((m__8982__auto__ == null))){
return m__8982__auto__.call(null,spec,gfn);
} else {
var m__8982__auto____$1 = (cljs.spec.with_gen_STAR_["_"]);
if(!((m__8982__auto____$1 == null))){
return m__8982__auto____$1.call(null,spec,gfn);
} else {
throw cljs.core.missing_protocol.call(null,"Spec.with-gen*",spec);
}
}
}
});
cljs.spec.describe_STAR_ = (function cljs$spec$describe_STAR_(spec){
if((!((spec == null))) && (!((spec.cljs$spec$Spec$describe_STAR_$arity$1 == null)))){
return spec.cljs$spec$Spec$describe_STAR_$arity$1(spec);
} else {
var x__8981__auto__ = (((spec == null))?null:spec);
var m__8982__auto__ = (cljs.spec.describe_STAR_[goog.typeOf(x__8981__auto__)]);
if(!((m__8982__auto__ == null))){
return m__8982__auto__.call(null,spec);
} else {
var m__8982__auto____$1 = (cljs.spec.describe_STAR_["_"]);
if(!((m__8982__auto____$1 == null))){
return m__8982__auto____$1.call(null,spec);
} else {
throw cljs.core.missing_protocol.call(null,"Spec.describe*",spec);
}
}
}
});
if(typeof cljs.spec.registry_ref !== 'undefined'){
} else {
cljs.spec.registry_ref = cljs.core.atom.call(null,cljs.core.PersistentArrayMap.EMPTY);
}
cljs.spec.deep_resolve = (function cljs$spec$deep_resolve(reg,k){
var spec = k;
while(true){
if(cljs.core.ident_QMARK_.call(null,spec)){
var G__10823 = cljs.core.get.call(null,reg,spec);
spec = G__10823;
continue;
} else {
return spec;
}
break;
}
});
/**
* returns the spec/regex at end of alias chain starting with k, nil if not found, k if k not ident
*/
cljs.spec.reg_resolve = (function cljs$spec$reg_resolve(k){
if(cljs.core.ident_QMARK_.call(null,k)){
var reg = cljs.core.deref.call(null,cljs.spec.registry_ref);
var spec = cljs.core.get.call(null,reg,k);
if(!(cljs.core.ident_QMARK_.call(null,spec))){
return spec;
} else {
return cljs.spec.deep_resolve.call(null,reg,spec);
}
} else {
return k;
}
});
/**
* returns the spec/regex at end of alias chain starting with k, throws if not found, k if k not ident
*/
cljs.spec.reg_resolve_BANG_ = (function cljs$spec$reg_resolve_BANG_(k){
if(cljs.core.ident_QMARK_.call(null,k)){
var or__8313__auto__ = cljs.spec.reg_resolve.call(null,k);
if(cljs.core.truth_(or__8313__auto__)){
return or__8313__auto__;
} else {
throw (new Error([cljs.core.str("Unable to resolve spec: "),cljs.core.str(k)].join('')));
}
} else {
return k;
}
});
/**
* returns x if x is a spec object, else logical false
*/
cljs.spec.spec_QMARK_ = (function cljs$spec$spec_QMARK_(x){
if(((!((x == null)))?(((false) || ((cljs.core.PROTOCOL_SENTINEL === x.cljs$spec$Spec$)))?true:false):false)){
return x;
} else {
return null;
}
});
/**
* returns x if x is a (clojure.spec) regex op, else logical false
*/
cljs.spec.regex_QMARK_ = (function cljs$spec$regex_QMARK_(x){
var and__8301__auto__ = new cljs.core.Keyword("cljs.spec","op","cljs.spec/op",939378204).cljs$core$IFn$_invoke$arity$1(x);
if(cljs.core.truth_(and__8301__auto__)){
return x;
} else {
return and__8301__auto__;
}
});
cljs.spec.with_name = (function cljs$spec$with_name(spec,name){
if(cljs.core.ident_QMARK_.call(null,spec)){
return spec;
} else {
if(cljs.core.truth_(cljs.spec.regex_QMARK_.call(null,spec))){
return cljs.core.assoc.call(null,spec,new cljs.core.Keyword("cljs.spec","name","cljs.spec/name",-1902005006),name);
} else {
if(((!((spec == null)))?((((spec.cljs$lang$protocol_mask$partition0$ & (131072))) || ((cljs.core.PROTOCOL_SENTINEL === spec.cljs$core$IMeta$)))?true:false):false)){
return cljs.core.with_meta.call(null,spec,cljs.core.assoc.call(null,cljs.core.meta.call(null,spec),new cljs.core.Keyword("cljs.spec","name","cljs.spec/name",-1902005006),name));
} else {
return null;
}
}
}
});
cljs.spec.spec_name = (function cljs$spec$spec_name(spec){
if(cljs.core.ident_QMARK_.call(null,spec)){
return spec;
} else {
if(cljs.core.truth_(cljs.spec.regex_QMARK_.call(null,spec))){
return new cljs.core.Keyword("cljs.spec","name","cljs.spec/name",-1902005006).cljs$core$IFn$_invoke$arity$1(spec);
} else {
if(((!((spec == null)))?((((spec.cljs$lang$protocol_mask$partition0$ & (131072))) || ((cljs.core.PROTOCOL_SENTINEL === spec.cljs$core$IMeta$)))?true:false):false)){
return new cljs.core.Keyword("cljs.spec","name","cljs.spec/name",-1902005006).cljs$core$IFn$_invoke$arity$1(cljs.core.meta.call(null,spec));
} else {
return null;
}
}
}
});
/**
* spec-or-k must be a spec, regex or resolvable kw/sym, else returns nil.
*/
cljs.spec.maybe_spec = (function cljs$spec$maybe_spec(spec_or_k){
var s = (function (){var or__8313__auto__ = (function (){var and__8301__auto__ = cljs.core.ident_QMARK_.call(null,spec_or_k);
if(and__8301__auto__){
return cljs.spec.reg_resolve.call(null,spec_or_k);
} else {
return and__8301__auto__;
}
})();
if(cljs.core.truth_(or__8313__auto__)){
return or__8313__auto__;
} else {
var or__8313__auto____$1 = cljs.spec.spec_QMARK_.call(null,spec_or_k);
if(cljs.core.truth_(or__8313__auto____$1)){
return or__8313__auto____$1;
} else {
var or__8313__auto____$2 = cljs.spec.regex_QMARK_.call(null,spec_or_k);
if(cljs.core.truth_(or__8313__auto____$2)){
return or__8313__auto____$2;
} else {
return null;
}
}
}
})();
if(cljs.core.truth_(cljs.spec.regex_QMARK_.call(null,s))){
return cljs.spec.with_name.call(null,cljs.spec.regex_spec_impl.call(null,s,null),cljs.spec.spec_name.call(null,s));
} else {
return s;
}
});
/**
* spec-or-k must be a spec, regex or kw/sym, else returns nil. Throws if unresolvable kw/sym
*/
cljs.spec.the_spec = (function cljs$spec$the_spec(spec_or_k){
var or__8313__auto__ = cljs.spec.maybe_spec.call(null,spec_or_k);
if(cljs.core.truth_(or__8313__auto__)){
return or__8313__auto__;
} else {
if(cljs.core.ident_QMARK_.call(null,spec_or_k)){
throw (new Error([cljs.core.str("Unable to resolve spec: "),cljs.core.str(spec_or_k)].join('')));
} else {
return null;
}
}
});
/**
* @interface
*/
cljs.spec.Specize = function(){};
cljs.spec.specize_STAR_ = (function cljs$spec$specize_STAR_(var_args){
var args10830 = [];
var len__9426__auto___10833 = arguments.length;
var i__9427__auto___10834 = (0);
while(true){
if((i__9427__auto___10834 < len__9426__auto___10833)){
args10830.push((arguments[i__9427__auto___10834]));
var G__10835 = (i__9427__auto___10834 + (1));
i__9427__auto___10834 = G__10835;
continue;
} else {
}
break;
}
var G__10832 = args10830.length;
switch (G__10832) {
case 1:
return cljs.spec.specize_STAR_.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
break;
case 2:
return cljs.spec.specize_STAR_.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
break;
default:
throw (new Error([cljs.core.str("Invalid arity: "),cljs.core.str(args10830.length)].join('')));
}
});
cljs.spec.specize_STAR_.cljs$core$IFn$_invoke$arity$1 = (function (_){
if((!((_ == null))) && (!((_.cljs$spec$Specize$specize_STAR_$arity$1 == null)))){
return _.cljs$spec$Specize$specize_STAR_$arity$1(_);
} else {
var x__8981__auto__ = (((_ == null))?null:_);
var m__8982__auto__ = (cljs.spec.specize_STAR_[goog.typeOf(x__8981__auto__)]);
if(!((m__8982__auto__ == null))){
return m__8982__auto__.call(null,_);
} else {
var m__8982__auto____$1 = (cljs.spec.specize_STAR_["_"]);
if(!((m__8982__auto____$1 == null))){
return m__8982__auto____$1.call(null,_);
} else {
throw cljs.core.missing_protocol.call(null,"Specize.specize*",_);
}
}
}
});
cljs.spec.specize_STAR_.cljs$core$IFn$_invoke$arity$2 = (function (_,form){
if((!((_ == null))) && (!((_.cljs$spec$Specize$specize_STAR_$arity$2 == null)))){
return _.cljs$spec$Specize$specize_STAR_$arity$2(_,form);
} else {
var x__8981__auto__ = (((_ == null))?null:_);
var m__8982__auto__ = (cljs.spec.specize_STAR_[goog.typeOf(x__8981__auto__)]);
if(!((m__8982__auto__ == null))){
return m__8982__auto__.call(null,_,form);
} else {
var m__8982__auto____$1 = (cljs.spec.specize_STAR_["_"]);
if(!((m__8982__auto____$1 == null))){
return m__8982__auto____$1.call(null,_,form);
} else {
throw cljs.core.missing_protocol.call(null,"Specize.specize*",_);
}
}
}
});
cljs.spec.specize_STAR_.cljs$lang$maxFixedArity = 2;
cljs.core.Keyword.prototype.cljs$spec$Specize$ = cljs.core.PROTOCOL_SENTINEL;
cljs.core.Keyword.prototype.cljs$spec$Specize$specize_STAR_$arity$1 = (function (k){
var k__$1 = this;
return cljs.spec.specize_STAR_.call(null,cljs.spec.reg_resolve_BANG_.call(null,k__$1));
});
cljs.core.Keyword.prototype.cljs$spec$Specize$specize_STAR_$arity$2 = (function (k,_){
var k__$1 = this;
return cljs.spec.specize_STAR_.call(null,cljs.spec.reg_resolve_BANG_.call(null,k__$1));
});
cljs.core.Symbol.prototype.cljs$spec$Specize$ = cljs.core.PROTOCOL_SENTINEL;
cljs.core.Symbol.prototype.cljs$spec$Specize$specize_STAR_$arity$1 = (function (s){
var s__$1 = this;
return cljs.spec.specize_STAR_.call(null,cljs.spec.reg_resolve_BANG_.call(null,s__$1));
});
cljs.core.Symbol.prototype.cljs$spec$Specize$specize_STAR_$arity$2 = (function (s,_){
var s__$1 = this;
return cljs.spec.specize_STAR_.call(null,cljs.spec.reg_resolve_BANG_.call(null,s__$1));
});
(cljs.spec.Specize["_"] = true);
(cljs.spec.specize_STAR_["_"] = (function() {
var G__10837 = null;
var G__10837__1 = (function (o){
return cljs.spec.spec_impl.call(null,new cljs.core.Keyword("cljs.spec","unknown","cljs.spec/unknown",-1620309582),o,null,null);
});
var G__10837__2 = (function (o,form){
return cljs.spec.spec_impl.call(null,form,o,null,null);
});
G__10837 = function(o,form){
switch(arguments.length){
case 1:
return G__10837__1.call(this,o);
case 2:
return G__10837__2.call(this,o,form);
}
throw(new Error('Invalid arity: ' + arguments.length));
};
G__10837.cljs$core$IFn$_invoke$arity$1 = G__10837__1;
G__10837.cljs$core$IFn$_invoke$arity$2 = G__10837__2;
return G__10837;
})()
);
cljs.spec.specize = (function cljs$spec$specize(var_args){
var args10838 = [];
var len__9426__auto___10841 = arguments.length;
var i__9427__auto___10842 = (0);
while(true){
if((i__9427__auto___10842 < len__9426__auto___10841)){
args10838.push((arguments[i__9427__auto___10842]));
var G__10843 = (i__9427__auto___10842 + (1));
i__9427__auto___10842 = G__10843;
continue;
} else {
}
break;
}
var G__10840 = args10838.length;
switch (G__10840) {
case 1:
return cljs.spec.specize.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
break;
case 2:
return cljs.spec.specize.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
break;
default:
throw (new Error([cljs.core.str("Invalid arity: "),cljs.core.str(args10838.length)].join('')));
}
});
cljs.spec.specize.cljs$core$IFn$_invoke$arity$1 = (function (s){
var or__8313__auto__ = cljs.spec.spec_QMARK_.call(null,s);
if(cljs.core.truth_(or__8313__auto__)){
return or__8313__auto__;
} else {
return cljs.spec.specize_STAR_.call(null,s);
}
});
cljs.spec.specize.cljs$core$IFn$_invoke$arity$2 = (function (s,form){
var or__8313__auto__ = cljs.spec.spec_QMARK_.call(null,s);
if(cljs.core.truth_(or__8313__auto__)){
return or__8313__auto__;
} else {
return cljs.spec.specize_STAR_.call(null,s,form);
}
});
cljs.spec.specize.cljs$lang$maxFixedArity = 2;
/**
* tests the validity of a conform return value
*/
cljs.spec.invalid_QMARK_ = (function cljs$spec$invalid_QMARK_(ret){
return cljs.core.keyword_identical_QMARK_.call(null,new cljs.core.Keyword("cljs.spec","invalid","cljs.spec/invalid",551677537),ret);
});
/**
* Given a spec and a value, returns :clojure.spec/invalid if value does not match spec,
* else the (possibly destructured) value.
*/
cljs.spec.conform = (function cljs$spec$conform(spec,x){
return cljs.spec.conform_STAR_.call(null,cljs.spec.specize.call(null,spec),x);
});
/**
* Given a spec and a value created by or compliant with a call to
* 'conform' with the same spec, returns a value with all conform
* destructuring undone.
*/
cljs.spec.unform = (function cljs$spec$unform(spec,x){
return cljs.spec.unform_STAR_.call(null,cljs.spec.specize.call(null,spec),x);
});
/**
* returns the spec as data
*/
cljs.spec.form = (function cljs$spec$form(spec){
return cljs.spec.describe_STAR_.call(null,cljs.spec.specize.call(null,spec));
});
cljs.spec.abbrev = (function cljs$spec$abbrev(form){
if(cljs.core.seq_QMARK_.call(null,form)){
return clojure.walk.postwalk.call(null,(function (form__$1){
if(cljs.core.truth_((function (){var and__8301__auto__ = (form__$1 instanceof cljs.core.Symbol);
if(and__8301__auto__){
return cljs.core.namespace.call(null,form__$1);
} else {
return and__8301__auto__;
}
})())){
return cljs.core.symbol.call(null,cljs.core.name.call(null,form__$1));
} else {
if((cljs.core.seq_QMARK_.call(null,form__$1)) && (cljs.core._EQ_.call(null,new cljs.core.Symbol(null,"fn","fn",465265323,null),cljs.core.first.call(null,form__$1))) && (cljs.core._EQ_.call(null,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Symbol(null,"%","%",-950237169,null)], null),cljs.core.second.call(null,form__$1)))){
return cljs.core.last.call(null,form__$1);
} else {
return form__$1;
}
}
}),form);
} else {
if(cljs.core.truth_((function (){var and__8301__auto__ = (form instanceof cljs.core.Symbol);
if(and__8301__auto__){
return cljs.core.namespace.call(null,form);
} else {
return and__8301__auto__;
}
})())){
return cljs.core.symbol.call(null,cljs.core.name.call(null,form));
} else {
return form;
}
}
});
/**
* returns an abbreviated description of the spec as data
*/
cljs.spec.describe = (function cljs$spec$describe(spec){
return cljs.spec.abbrev.call(null,cljs.spec.form.call(null,spec));
});
/**
* Takes a spec and a no-arg, generator-returning fn and returns a version of that spec that uses that generator
*/
cljs.spec.with_gen = (function cljs$spec$with_gen(spec,gen_fn){
var spec__$1 = cljs.spec.reg_resolve.call(null,spec);
if(cljs.core.truth_(cljs.spec.regex_QMARK_.call(null,spec__$1))){
return cljs.core.assoc.call(null,spec__$1,new cljs.core.Keyword("cljs.spec","gfn","cljs.spec/gfn",-432034727),gen_fn);
} else {
return cljs.spec.with_gen_STAR_.call(null,cljs.spec.specize.call(null,spec__$1),gen_fn);
}
});
cljs.spec.explain_data_STAR_ = (function cljs$spec$explain_data_STAR_(spec,path,via,in$,x){
var temp__4657__auto__ = cljs.spec.explain_STAR_.call(null,cljs.spec.specize.call(null,spec),path,via,in$,x);
if(cljs.core.truth_(temp__4657__auto__)){
var probs = temp__4657__auto__;
if(cljs.core.empty_QMARK_.call(null,probs)){
return null;
} else {
return new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("cljs.spec","problems","cljs.spec/problems",608491678),probs], null);
}
} else {
return null;
}
});
/**
* Given a spec and a value x which ought to conform, returns nil if x
* conforms, else a map with at least the key ::problems whose value is
* a collection of problem-maps, where problem-map has at least :path :pred and :val
* keys describing the predicate and the value that failed at that
* path.
*/
cljs.spec.explain_data = (function cljs$spec$explain_data(spec,x){
return cljs.spec.explain_data_STAR_.call(null,spec,cljs.core.PersistentVector.EMPTY,(function (){var temp__4655__auto__ = cljs.spec.spec_name.call(null,spec);
if(cljs.core.truth_(temp__4655__auto__)){
var name = temp__4655__auto__;
return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [name], null);
} else {
return cljs.core.PersistentVector.EMPTY;
}
})(),cljs.core.PersistentVector.EMPTY,x);
});
/**
* Default printer for explain-data. nil indicates a successful validation.
*/
cljs.spec.explain_printer = (function cljs$spec$explain_printer(ed){
if(cljs.core.truth_(ed)){
return cljs.core.print.call(null,(function (){var sb__9307__auto__ = (new goog.string.StringBuffer());
var _STAR_print_newline_STAR_10885_10925 = cljs.core._STAR_print_newline_STAR_;
var _STAR_print_fn_STAR_10886_10926 = cljs.core._STAR_print_fn_STAR_;
cljs.core._STAR_print_newline_STAR_ = true;
cljs.core._STAR_print_fn_STAR_ = ((function (_STAR_print_newline_STAR_10885_10925,_STAR_print_fn_STAR_10886_10926,sb__9307__auto__){
return (function (x__9308__auto__){
return sb__9307__auto__.append(x__9308__auto__);
});})(_STAR_print_newline_STAR_10885_10925,_STAR_print_fn_STAR_10886_10926,sb__9307__auto__))
;
try{var seq__10887_10927 = cljs.core.seq.call(null,new cljs.core.Keyword("cljs.spec","problems","cljs.spec/problems",608491678).cljs$core$IFn$_invoke$arity$1(ed));
var chunk__10888_10928 = null;
var count__10889_10929 = (0);
var i__10890_10930 = (0);
while(true){
if((i__10890_10930 < count__10889_10929)){
var map__10891_10931 = cljs.core._nth.call(null,chunk__10888_10928,i__10890_10930);
var map__10891_10932__$1 = ((((!((map__10891_10931 == null)))?((((map__10891_10931.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__10891_10931.cljs$core$ISeq$)))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__10891_10931):map__10891_10931);
var prob_10933 = map__10891_10932__$1;
var path_10934 = cljs.core.get.call(null,map__10891_10932__$1,new cljs.core.Keyword(null,"path","path",-188191168));
var pred_10935 = cljs.core.get.call(null,map__10891_10932__$1,new cljs.core.Keyword(null,"pred","pred",1927423397));
var val_10936 = cljs.core.get.call(null,map__10891_10932__$1,new cljs.core.Keyword(null,"val","val",128701612));
var reason_10937 = cljs.core.get.call(null,map__10891_10932__$1,new cljs.core.Keyword(null,"reason","reason",-2070751759));
var via_10938 = cljs.core.get.call(null,map__10891_10932__$1,new cljs.core.Keyword(null,"via","via",-1904457336));
var in_10939 = cljs.core.get.call(null,map__10891_10932__$1,new cljs.core.Keyword(null,"in","in",-1531184865));
if(cljs.core.empty_QMARK_.call(null,in_10939)){
} else {
cljs.core.print.call(null,"In:",cljs.core.pr_str.call(null,in_10939),"");
}
cljs.core.print.call(null,"val: ");
cljs.core.pr.call(null,val_10936);
cljs.core.print.call(null," fails");
if(cljs.core.empty_QMARK_.call(null,via_10938)){
} else {
cljs.core.print.call(null," spec:",cljs.core.pr_str.call(null,cljs.core.last.call(null,via_10938)));
}
if(cljs.core.empty_QMARK_.call(null,path_10934)){
} else {
cljs.core.print.call(null," at:",cljs.core.pr_str.call(null,path_10934));
}
cljs.core.print.call(null," predicate: ");
cljs.core.pr.call(null,cljs.spec.abbrev.call(null,pred_10935));
if(cljs.core.truth_(reason_10937)){
cljs.core.print.call(null,", ",reason_10937);
} else {
}
var seq__10893_10940 = cljs.core.seq.call(null,prob_10933);
var chunk__10894_10941 = null;
var count__10895_10942 = (0);
var i__10896_10943 = (0);
while(true){
if((i__10896_10943 < count__10895_10942)){
var vec__10897_10944 = cljs.core._nth.call(null,chunk__10894_10941,i__10896_10943);
var k_10945 = cljs.core.nth.call(null,vec__10897_10944,(0),null);
var v_10946 = cljs.core.nth.call(null,vec__10897_10944,(1),null);
if(cljs.core.truth_(new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 6, [new cljs.core.Keyword(null,"path","path",-188191168),null,new cljs.core.Keyword(null,"pred","pred",1927423397),null,new cljs.core.Keyword(null,"via","via",-1904457336),null,new cljs.core.Keyword(null,"val","val",128701612),null,new cljs.core.Keyword(null,"reason","reason",-2070751759),null,new cljs.core.Keyword(null,"in","in",-1531184865),null], null), null).call(null,k_10945))){
} else {
cljs.core.print.call(null,"\n\t",cljs.core.pr_str.call(null,k_10945)," ");
cljs.core.pr.call(null,v_10946);
}
var G__10947 = seq__10893_10940;
var G__10948 = chunk__10894_10941;
var G__10949 = count__10895_10942;
var G__10950 = (i__10896_10943 + (1));
seq__10893_10940 = G__10947;
chunk__10894_10941 = G__10948;
count__10895_10942 = G__10949;
i__10896_10943 = G__10950;
continue;
} else {
var temp__4657__auto___10951 = cljs.core.seq.call(null,seq__10893_10940);
if(temp__4657__auto___10951){
var seq__10893_10952__$1 = temp__4657__auto___10951;
if(cljs.core.chunked_seq_QMARK_.call(null,seq__10893_10952__$1)){
var c__9132__auto___10953 = cljs.core.chunk_first.call(null,seq__10893_10952__$1);
var G__10954 = cljs.core.chunk_rest.call(null,seq__10893_10952__$1);
var G__10955 = c__9132__auto___10953;
var G__10956 = cljs.core.count.call(null,c__9132__auto___10953);
var G__10957 = (0);
seq__10893_10940 = G__10954;
chunk__10894_10941 = G__10955;
count__10895_10942 = G__10956;
i__10896_10943 = G__10957;
continue;
} else {
var vec__10900_10958 = cljs.core.first.call(null,seq__10893_10952__$1);
var k_10959 = cljs.core.nth.call(null,vec__10900_10958,(0),null);
var v_10960 = cljs.core.nth.call(null,vec__10900_10958,(1),null);
if(cljs.core.truth_(new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 6, [new cljs.core.Keyword(null,"path","path",-188191168),null,new cljs.core.Keyword(null,"pred","pred",1927423397),null,new cljs.core.Keyword(null,"via","via",-1904457336),null,new cljs.core.Keyword(null,"val","val",128701612),null,new cljs.core.Keyword(null,"reason","reason",-2070751759),null,new cljs.core.Keyword(null,"in","in",-1531184865),null], null), null).call(null,k_10959))){
} else {
cljs.core.print.call(null,"\n\t",cljs.core.pr_str.call(null,k_10959)," ");
cljs.core.pr.call(null,v_10960);
}
var G__10961 = cljs.core.next.call(null,seq__10893_10952__$1);
var G__10962 = null;
var G__10963 = (0);
var G__10964 = (0);
seq__10893_10940 = G__10961;
chunk__10894_10941 = G__10962;
count__10895_10942 = G__10963;
i__10896_10943 = G__10964;
continue;
}
} else {
}
}
break;
}
cljs.core.newline.call(null);
var G__10965 = seq__10887_10927;
var G__10966 = chunk__10888_10928;
var G__10967 = count__10889_10929;
var G__10968 = (i__10890_10930 + (1));
seq__10887_10927 = G__10965;
chunk__10888_10928 = G__10966;
count__10889_10929 = G__10967;
i__10890_10930 = G__10968;
continue;
} else {
var temp__4657__auto___10969 = cljs.core.seq.call(null,seq__10887_10927);
if(temp__4657__auto___10969){
var seq__10887_10970__$1 = temp__4657__auto___10969;
if(cljs.core.chunked_seq_QMARK_.call(null,seq__10887_10970__$1)){
var c__9132__auto___10971 = cljs.core.chunk_first.call(null,seq__10887_10970__$1);
var G__10972 = cljs.core.chunk_rest.call(null,seq__10887_10970__$1);
var G__10973 = c__9132__auto___10971;
var G__10974 = cljs.core.count.call(null,c__9132__auto___10971);
var G__10975 = (0);
seq__10887_10927 = G__10972;
chunk__10888_10928 = G__10973;
count__10889_10929 = G__10974;
i__10890_10930 = G__10975;
continue;
} else {
var map__10903_10976 = cljs.core.first.call(null,seq__10887_10970__$1);
var map__10903_10977__$1 = ((((!((map__10903_10976 == null)))?((((map__10903_10976.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__10903_10976.cljs$core$ISeq$)))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__10903_10976):map__10903_10976);
var prob_10978 = map__10903_10977__$1;
var path_10979 = cljs.core.get.call(null,map__10903_10977__$1,new cljs.core.Keyword(null,"path","path",-188191168));
var pred_10980 = cljs.core.get.call(null,map__10903_10977__$1,new cljs.core.Keyword(null,"pred","pred",1927423397));
var val_10981 = cljs.core.get.call(null,map__10903_10977__$1,new cljs.core.Keyword(null,"val","val",128701612));
var reason_10982 = cljs.core.get.call(null,map__10903_10977__$1,new cljs.core.Keyword(null,"reason","reason",-2070751759));
var via_10983 = cljs.core.get.call(null,map__10903_10977__$1,new cljs.core.Keyword(null,"via","via",-1904457336));
var in_10984 = cljs.core.get.call(null,map__10903_10977__$1,new cljs.core.Keyword(null,"in","in",-1531184865));
if(cljs.core.empty_QMARK_.call(null,in_10984)){
} else {
cljs.core.print.call(null,"In:",cljs.core.pr_str.call(null,in_10984),"");
}
cljs.core.print.call(null,"val: ");
cljs.core.pr.call(null,val_10981);
cljs.core.print.call(null," fails");
if(cljs.core.empty_QMARK_.call(null,via_10983)){
} else {
cljs.core.print.call(null," spec:",cljs.core.pr_str.call(null,cljs.core.last.call(null,via_10983)));
}
if(cljs.core.empty_QMARK_.call(null,path_10979)){
} else {
cljs.core.print.call(null," at:",cljs.core.pr_str.call(null,path_10979));
}
cljs.core.print.call(null," predicate: ");
cljs.core.pr.call(null,cljs.spec.abbrev.call(null,pred_10980));
if(cljs.core.truth_(reason_10982)){
cljs.core.print.call(null,", ",reason_10982);
} else {
}
var seq__10905_10985 = cljs.core.seq.call(null,prob_10978);
var chunk__10906_10986 = null;
var count__10907_10987 = (0);
var i__10908_10988 = (0);
while(true){
if((i__10908_10988 < count__10907_10987)){
var vec__10909_10989 = cljs.core._nth.call(null,chunk__10906_10986,i__10908_10988);
var k_10990 = cljs.core.nth.call(null,vec__10909_10989,(0),null);
var v_10991 = cljs.core.nth.call(null,vec__10909_10989,(1),null);
if(cljs.core.truth_(new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 6, [new cljs.core.Keyword(null,"path","path",-188191168),null,new cljs.core.Keyword(null,"pred","pred",1927423397),null,new cljs.core.Keyword(null,"via","via",-1904457336),null,new cljs.core.Keyword(null,"val","val",128701612),null,new cljs.core.Keyword(null,"reason","reason",-2070751759),null,new cljs.core.Keyword(null,"in","in",-1531184865),null], null), null).call(null,k_10990))){
} else {
cljs.core.print.call(null,"\n\t",cljs.core.pr_str.call(null,k_10990)," ");
cljs.core.pr.call(null,v_10991);
}
var G__10992 = seq__10905_10985;
var G__10993 = chunk__10906_10986;
var G__10994 = count__10907_10987;
var G__10995 = (i__10908_10988 + (1));
seq__10905_10985 = G__10992;
chunk__10906_10986 = G__10993;
count__10907_10987 = G__10994;
i__10908_10988 = G__10995;
continue;
} else {
var temp__4657__auto___10996__$1 = cljs.core.seq.call(null,seq__10905_10985);
if(temp__4657__auto___10996__$1){
var seq__10905_10997__$1 = temp__4657__auto___10996__$1;
if(cljs.core.chunked_seq_QMARK_.call(null,seq__10905_10997__$1)){
var c__9132__auto___10998 = cljs.core.chunk_first.call(null,seq__10905_10997__$1);
var G__10999 = cljs.core.chunk_rest.call(null,seq__10905_10997__$1);
var G__11000 = c__9132__auto___10998;
var G__11001 = cljs.core.count.call(null,c__9132__auto___10998);
var G__11002 = (0);
seq__10905_10985 = G__10999;
chunk__10906_10986 = G__11000;
count__10907_10987 = G__11001;
i__10908_10988 = G__11002;
continue;
} else {
var vec__10912_11003 = cljs.core.first.call(null,seq__10905_10997__$1);
var k_11004 = cljs.core.nth.call(null,vec__10912_11003,(0),null);
var v_11005 = cljs.core.nth.call(null,vec__10912_11003,(1),null);
if(cljs.core.truth_(new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 6, [new cljs.core.Keyword(null,"path","path",-188191168),null,new cljs.core.Keyword(null,"pred","pred",1927423397),null,new cljs.core.Keyword(null,"via","via",-1904457336),null,new cljs.core.Keyword(null,"val","val",128701612),null,new cljs.core.Keyword(null,"reason","reason",-2070751759),null,new cljs.core.Keyword(null,"in","in",-1531184865),null], null), null).call(null,k_11004))){
} else {
cljs.core.print.call(null,"\n\t",cljs.core.pr_str.call(null,k_11004)," ");
cljs.core.pr.call(null,v_11005);
}
var G__11006 = cljs.core.next.call(null,seq__10905_10997__$1);
var G__11007 = null;
var G__11008 = (0);
var G__11009 = (0);
seq__10905_10985 = G__11006;
chunk__10906_10986 = G__11007;
count__10907_10987 = G__11008;
i__10908_10988 = G__11009;
continue;
}
} else {
}
}
break;
}
cljs.core.newline.call(null);
var G__11010 = cljs.core.next.call(null,seq__10887_10970__$1);
var G__11011 = null;
var G__11012 = (0);
var G__11013 = (0);
seq__10887_10927 = G__11010;
chunk__10888_10928 = G__11011;
count__10889_10929 = G__11012;
i__10890_10930 = G__11013;
continue;
}
} else {
}
}
break;
}
var seq__10915_11014 = cljs.core.seq.call(null,ed);
var chunk__10916_11015 = null;
var count__10917_11016 = (0);
var i__10918_11017 = (0);
while(true){
if((i__10918_11017 < count__10917_11016)){
var vec__10919_11018 = cljs.core._nth.call(null,chunk__10916_11015,i__10918_11017);
var k_11019 = cljs.core.nth.call(null,vec__10919_11018,(0),null);
var v_11020 = cljs.core.nth.call(null,vec__10919_11018,(1),null);
if(cljs.core.truth_(new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("cljs.spec","problems","cljs.spec/problems",608491678),null], null), null).call(null,k_11019))){
} else {
cljs.core.print.call(null,cljs.core.pr_str.call(null,k_11019)," ");
cljs.core.pr.call(null,v_11020);
cljs.core.newline.call(null);
}
var G__11021 = seq__10915_11014;
var G__11022 = chunk__10916_11015;
var G__11023 = count__10917_11016;
var G__11024 = (i__10918_11017 + (1));
seq__10915_11014 = G__11021;
chunk__10916_11015 = G__11022;
count__10917_11016 = G__11023;
i__10918_11017 = G__11024;
continue;
} else {
var temp__4657__auto___11025 = cljs.core.seq.call(null,seq__10915_11014);
if(temp__4657__auto___11025){
var seq__10915_11026__$1 = temp__4657__auto___11025;
if(cljs.core.chunked_seq_QMARK_.call(null,seq__10915_11026__$1)){
var c__9132__auto___11027 = cljs.core.chunk_first.call(null,seq__10915_11026__$1);
var G__11028 = cljs.core.chunk_rest.call(null,seq__10915_11026__$1);
var G__11029 = c__9132__auto___11027;
var G__11030 = cljs.core.count.call(null,c__9132__auto___11027);
var G__11031 = (0);
seq__10915_11014 = G__11028;
chunk__10916_11015 = G__11029;
count__10917_11016 = G__11030;
i__10918_11017 = G__11031;
continue;
} else {
var vec__10922_11032 = cljs.core.first.call(null,seq__10915_11026__$1);
var k_11033 = cljs.core.nth.call(null,vec__10922_11032,(0),null);
var v_11034 = cljs.core.nth.call(null,vec__10922_11032,(1),null);
if(cljs.core.truth_(new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("cljs.spec","problems","cljs.spec/problems",608491678),null], null), null).call(null,k_11033))){
} else {
cljs.core.print.call(null,cljs.core.pr_str.call(null,k_11033)," ");
cljs.core.pr.call(null,v_11034);
cljs.core.newline.call(null);
}
var G__11035 = cljs.core.next.call(null,seq__10915_11026__$1);
var G__11036 = null;
var G__11037 = (0);
var G__11038 = (0);
seq__10915_11014 = G__11035;
chunk__10916_11015 = G__11036;
count__10917_11016 = G__11037;
i__10918_11017 = G__11038;
continue;
}
} else {
}
}
break;
}
}finally {cljs.core._STAR_print_fn_STAR_ = _STAR_print_fn_STAR_10886_10926;
cljs.core._STAR_print_newline_STAR_ = _STAR_print_newline_STAR_10885_10925;
}
return [cljs.core.str(sb__9307__auto__)].join('');
})());
} else {
return cljs.core.println.call(null,"Success!");
}
});
cljs.spec._STAR_explain_out_STAR_ = cljs.spec.explain_printer;
/**
* Prints explanation data (per 'explain-data') to *out* using the printer in *explain-out*,
* by default explain-printer.
*/
cljs.spec.explain_out = (function cljs$spec$explain_out(ed){
return cljs.spec._STAR_explain_out_STAR_.call(null,ed);
});
/**
* Given a spec and a value that fails to conform, prints an explanation to *out*.
*/
cljs.spec.explain = (function cljs$spec$explain(spec,x){
return cljs.spec.explain_out.call(null,cljs.spec.explain_data.call(null,spec,x));
});
/**
* Given a spec and a value that fails to conform, returns an explanation as a string.
*/
cljs.spec.explain_str = (function cljs$spec$explain_str(spec,x){
var sb__9307__auto__ = (new goog.string.StringBuffer());
var _STAR_print_newline_STAR_11041_11043 = cljs.core._STAR_print_newline_STAR_;
var _STAR_print_fn_STAR_11042_11044 = cljs.core._STAR_print_fn_STAR_;
cljs.core._STAR_print_newline_STAR_ = true;
cljs.core._STAR_print_fn_STAR_ = ((function (_STAR_print_newline_STAR_11041_11043,_STAR_print_fn_STAR_11042_11044,sb__9307__auto__){
return (function (x__9308__auto__){
return sb__9307__auto__.append(x__9308__auto__);
});})(_STAR_print_newline_STAR_11041_11043,_STAR_print_fn_STAR_11042_11044,sb__9307__auto__))
;
try{cljs.spec.explain.call(null,spec,x);
}finally {cljs.core._STAR_print_fn_STAR_ = _STAR_print_fn_STAR_11042_11044;
cljs.core._STAR_print_newline_STAR_ = _STAR_print_newline_STAR_11041_11043;
}
return [cljs.core.str(sb__9307__auto__)].join('');
});
cljs.spec.gensub = (function cljs$spec$gensub(spec,overrides,path,rmap,form){
var spec__$1 = cljs.spec.specize.call(null,spec);
var temp__4655__auto__ = (function (){var or__8313__auto__ = (function (){var temp__4657__auto__ = (function (){var or__8313__auto__ = cljs.core.get.call(null,overrides,(function (){var or__8313__auto__ = cljs.spec.spec_name.call(null,spec__$1);
if(cljs.core.truth_(or__8313__auto__)){
return or__8313__auto__;
} else {
return spec__$1;
}
})());
if(cljs.core.truth_(or__8313__auto__)){
return or__8313__auto__;
} else {
return cljs.core.get.call(null,overrides,path);
}
})();
if(cljs.core.truth_(temp__4657__auto__)){
var gfn = temp__4657__auto__;
return gfn.call(null);
} else {
return null;
}
})();
if(cljs.core.truth_(or__8313__auto__)){
return or__8313__auto__;
} else {
return cljs.spec.gen_STAR_.call(null,spec__$1,overrides,path,rmap);
}
})();
if(cljs.core.truth_(temp__4655__auto__)){
var g = temp__4655__auto__;
return cljs.spec.impl.gen.such_that.call(null,((function (g,temp__4655__auto__,spec__$1){
return (function (p1__11045_SHARP_){
return cljs.spec.valid_QMARK_.call(null,spec__$1,p1__11045_SHARP_);
});})(g,temp__4655__auto__,spec__$1))
,g,(100));
} else {
throw (new Error([cljs.core.str("Unable to construct gen at: "),cljs.core.str(path),cljs.core.str(" for: "),cljs.core.str(cljs.spec.abbrev.call(null,form))].join('')));
}
});
/**
* Given a spec, returns the generator for it, or throws if none can
* be constructed. Optionally an overrides map can be provided which
* should map spec names or paths (vectors of keywords) to no-arg
* generator-creating fns. These will be used instead of the generators at those
* names/paths. Note that parent generator (in the spec or overrides
* map) will supersede those of any subtrees. A generator for a regex
* op must always return a sequential collection (i.e. a generator for
* s/? should return either an empty sequence/vector or a
* sequence/vector with one item in it)
*/
cljs.spec.gen = (function cljs$spec$gen(var_args){
var args11046 = [];
var len__9426__auto___11049 = arguments.length;
var i__9427__auto___11050 = (0);
while(true){
if((i__9427__auto___11050 < len__9426__auto___11049)){
args11046.push((arguments[i__9427__auto___11050]));
var G__11051 = (i__9427__auto___11050 + (1));
i__9427__auto___11050 = G__11051;
continue;
} else {
}
break;
}
var G__11048 = args11046.length;
switch (G__11048) {
case 1:
return cljs.spec.gen.cljs$core$IFn$_invoke$arity$1((arguments[(0)]));
break;
case 2:
return cljs.spec.gen.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
break;
default:
throw (new Error([cljs.core.str("Invalid arity: "),cljs.core.str(args11046.length)].join('')));
}
});
cljs.spec.gen.cljs$core$IFn$_invoke$arity$1 = (function (spec){
return cljs.spec.gen.call(null,spec,null);
});
cljs.spec.gen.cljs$core$IFn$_invoke$arity$2 = (function (spec,overrides){
return cljs.spec.gensub.call(null,spec,overrides,cljs.core.PersistentVector.EMPTY,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("cljs.spec","recursion-limit","cljs.spec/recursion-limit",-630131086),cljs.spec._STAR_recursion_limit_STAR_], null),spec);
});
cljs.spec.gen.cljs$lang$maxFixedArity = 2;
/**
* Do not call this directly, use 'def'
*/
cljs.spec.def_impl = (function cljs$spec$def_impl(k,form,spec){
if(cljs.core.truth_((function (){var and__8301__auto__ = cljs.core.ident_QMARK_.call(null,k);
if(and__8301__auto__){
return cljs.core.namespace.call(null,k);
} else {
return and__8301__auto__;
}
})())){
} else {
throw (new Error([cljs.core.str("Assert failed: "),cljs.core.str("k must be namespaced keyword or resolveable symbol"),cljs.core.str("\n"),cljs.core.str("(c/and (ident? k) (namespace k))")].join('')));
}
var spec__$1 = (cljs.core.truth_((function (){var or__8313__auto__ = cljs.spec.spec_QMARK_.call(null,spec);
if(cljs.core.truth_(or__8313__auto__)){
return or__8313__auto__;
} else {
var or__8313__auto____$1 = cljs.spec.regex_QMARK_.call(null,spec);
if(cljs.core.truth_(or__8313__auto____$1)){
return or__8313__auto____$1;
} else {
return cljs.core.get.call(null,cljs.core.deref.call(null,cljs.spec.registry_ref),spec);
}
}
})())?spec:cljs.spec.spec_impl.call(null,form,spec,null,null));
cljs.core.swap_BANG_.call(null,cljs.spec.registry_ref,cljs.core.assoc,k,cljs.spec.with_name.call(null,spec__$1,k));
return k;
});
/**
* returns the registry map, prefer 'get-spec' to lookup a spec by name
*/
cljs.spec.registry = (function cljs$spec$registry(){
return cljs.core.deref.call(null,cljs.spec.registry_ref);
});
/**
* Returns a symbol from a symbol or var
*/
cljs.spec.__GT_sym = (function cljs$spec$__GT_sym(x){
if(cljs.core.var_QMARK_.call(null,x)){
return x.sym;
} else {
return x;
}
});
/**
* Returns spec registered for keyword/symbol/var k, or nil.
*/
cljs.spec.get_spec = (function cljs$spec$get_spec(k){
return cljs.core.get.call(null,cljs.spec.registry.call(null),(((k instanceof cljs.core.Keyword))?k:cljs.spec.__GT_sym.call(null,k)));
});
cljs.spec.macroexpand_check = (function cljs$spec$macroexpand_check(v,args){
var specs = cljs.spec.get_spec.call(null,v);
var temp__4657__auto__ = new cljs.core.Keyword(null,"args","args",1315556576).cljs$core$IFn$_invoke$arity$1(specs);
if(cljs.core.truth_(temp__4657__auto__)){
var arg_spec = temp__4657__auto__;
if(cljs.core.truth_(cljs.spec.invalid_QMARK_.call(null,cljs.spec.conform.call(null,arg_spec,args)))){
var ed = cljs.core.assoc.call(null,cljs.spec.explain_data_STAR_.call(null,arg_spec,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"args","args",1315556576)], null),(function (){var temp__4655__auto__ = cljs.spec.spec_name.call(null,arg_spec);
if(cljs.core.truth_(temp__4655__auto__)){
var name = temp__4655__auto__;
return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [name], null);
} else {
return cljs.core.PersistentVector.EMPTY;
}
})(),cljs.core.PersistentVector.EMPTY,args),new cljs.core.Keyword("cljs.spec","args","cljs.spec/args",-367019609),args);
throw (new Error([cljs.core.str("Call to "),cljs.core.str(cljs.spec.__GT_sym.call(null,v)),cljs.core.str(" did not conform to spec:\n"),cljs.core.str((function (){var sb__9307__auto__ = (new goog.string.StringBuffer());
var _STAR_print_newline_STAR_11055_11057 = cljs.core._STAR_print_newline_STAR_;
var _STAR_print_fn_STAR_11056_11058 = cljs.core._STAR_print_fn_STAR_;
cljs.core._STAR_print_newline_STAR_ = true;
cljs.core._STAR_print_fn_STAR_ = ((function (_STAR_print_newline_STAR_11055_11057,_STAR_print_fn_STAR_11056_11058,sb__9307__auto__,ed,arg_spec,temp__4657__auto__,specs){
return (function (x__9308__auto__){
return sb__9307__auto__.append(x__9308__auto__);
});})(_STAR_print_newline_STAR_11055_11057,_STAR_print_fn_STAR_11056_11058,sb__9307__auto__,ed,arg_spec,temp__4657__auto__,specs))
;
try{cljs.spec.explain_out.call(null,ed);
}finally {cljs.core._STAR_print_fn_STAR_ = _STAR_print_fn_STAR_11056_11058;
cljs.core._STAR_print_newline_STAR_ = _STAR_print_newline_STAR_11055_11057;
}
return [cljs.core.str(sb__9307__auto__)].join('');
})())].join('')));
} else {
return null;
}
} else {
return null;
}
});
cljs.spec.recur_limit_QMARK_ = (function cljs$spec$recur_limit_QMARK_(rmap,id,path,k){
return ((cljs.core.get.call(null,rmap,id) > new cljs.core.Keyword("cljs.spec","recursion-limit","cljs.spec/recursion-limit",-630131086).cljs$core$IFn$_invoke$arity$1(rmap))) && (cljs.core.contains_QMARK_.call(null,cljs.core.set.call(null,path),k));
});
cljs.spec.inck = (function cljs$spec$inck(m,k){
return cljs.core.assoc.call(null,m,k,((function (){var or__8313__auto__ = cljs.core.get.call(null,m,k);
if(cljs.core.truth_(or__8313__auto__)){
return or__8313__auto__;
} else {
return (0);
}
})() + (1)));
});
cljs.spec.dt = (function cljs$spec$dt(var_args){
var args11059 = [];
var len__9426__auto___11062 = arguments.length;
var i__9427__auto___11063 = (0);
while(true){
if((i__9427__auto___11063 < len__9426__auto___11062)){
args11059.push((arguments[i__9427__auto___11063]));
var G__11064 = (i__9427__auto___11063 + (1));
i__9427__auto___11063 = G__11064;
continue;
} else {
}
break;
}
var G__11061 = args11059.length;
switch (G__11061) {
case 3:
return cljs.spec.dt.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
break;
case 4:
return cljs.spec.dt.cljs$core$IFn$_invoke$arity$4((arguments[(0)]),(arguments[(1)]),(arguments[(2)]),(arguments[(3)]));
break;
default:
throw (new Error([cljs.core.str("Invalid arity: "),cljs.core.str(args11059.length)].join('')));
}
});
cljs.spec.dt.cljs$core$IFn$_invoke$arity$3 = (function (pred,x,form){
return cljs.spec.dt.call(null,pred,x,form,null);
});
cljs.spec.dt.cljs$core$IFn$_invoke$arity$4 = (function (pred,x,form,cpred_QMARK_){
if(cljs.core.truth_(pred)){
var temp__4655__auto__ = cljs.spec.the_spec.call(null,pred);
if(cljs.core.truth_(temp__4655__auto__)){
var spec = temp__4655__auto__;
return cljs.spec.conform.call(null,spec,x);
} else {
if(cljs.core.ifn_QMARK_.call(null,pred)){
if(cljs.core.truth_(cpred_QMARK_)){
return pred.call(null,x);
} else {
if(cljs.core.truth_(pred.call(null,x))){
return x;
} else {
return new cljs.core.Keyword("cljs.spec","invalid","cljs.spec/invalid",551677537);
}
}
} else {
throw (new Error([cljs.core.str(cljs.core.pr_str.call(null,form)),cljs.core.str(" is not a fn, expected predicate fn")].join('')));
}
}
} else {
return x;
}
});
cljs.spec.dt.cljs$lang$maxFixedArity = 4;
/**
* Helper function that returns true when x is valid for spec.
*/
cljs.spec.valid_QMARK_ = (function cljs$spec$valid_QMARK_(var_args){
var args11066 = [];
var len__9426__auto___11069 = arguments.length;
var i__9427__auto___11070 = (0);
while(true){
if((i__9427__auto___11070 < len__9426__auto___11069)){
args11066.push((arguments[i__9427__auto___11070]));
var G__11071 = (i__9427__auto___11070 + (1));
i__9427__auto___11070 = G__11071;
continue;
} else {
}
break;
}
var G__11068 = args11066.length;
switch (G__11068) {
case 2:
return cljs.spec.valid_QMARK_.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
break;
case 3:
return cljs.spec.valid_QMARK_.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
break;
default:
throw (new Error([cljs.core.str("Invalid arity: "),cljs.core.str(args11066.length)].join('')));
}
});
cljs.spec.valid_QMARK_.cljs$core$IFn$_invoke$arity$2 = (function (spec,x){
var spec__$1 = cljs.spec.specize.call(null,spec);
return cljs.core.not.call(null,cljs.spec.invalid_QMARK_.call(null,cljs.spec.conform_STAR_.call(null,spec__$1,x)));
});
cljs.spec.valid_QMARK_.cljs$core$IFn$_invoke$arity$3 = (function (spec,x,form){
var spec__$1 = cljs.spec.specize.call(null,spec,form);
return cljs.core.not.call(null,cljs.spec.invalid_QMARK_.call(null,cljs.spec.conform_STAR_.call(null,spec__$1,x)));
});
cljs.spec.valid_QMARK_.cljs$lang$maxFixedArity = 3;
/**
* internal helper function that returns true when x is valid for spec.
*/
cljs.spec.pvalid_QMARK_ = (function cljs$spec$pvalid_QMARK_(var_args){
var args11073 = [];
var len__9426__auto___11076 = arguments.length;
var i__9427__auto___11077 = (0);
while(true){
if((i__9427__auto___11077 < len__9426__auto___11076)){
args11073.push((arguments[i__9427__auto___11077]));
var G__11078 = (i__9427__auto___11077 + (1));
i__9427__auto___11077 = G__11078;
continue;
} else {
}
break;
}
var G__11075 = args11073.length;
switch (G__11075) {
case 2:
return cljs.spec.pvalid_QMARK_.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
break;
case 3:
return cljs.spec.pvalid_QMARK_.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
break;
default:
throw (new Error([cljs.core.str("Invalid arity: "),cljs.core.str(args11073.length)].join('')));
}
});
cljs.spec.pvalid_QMARK_.cljs$core$IFn$_invoke$arity$2 = (function (pred,x){
return cljs.core.not.call(null,cljs.spec.invalid_QMARK_.call(null,cljs.spec.dt.call(null,pred,x,new cljs.core.Keyword("cljs.spec","unknown","cljs.spec/unknown",-1620309582))));
});
cljs.spec.pvalid_QMARK_.cljs$core$IFn$_invoke$arity$3 = (function (pred,x,form){
return cljs.core.not.call(null,cljs.spec.invalid_QMARK_.call(null,cljs.spec.dt.call(null,pred,x,form)));
});
cljs.spec.pvalid_QMARK_.cljs$lang$maxFixedArity = 3;
cljs.spec.explain_1 = (function cljs$spec$explain_1(form,pred,path,via,in$,v){
var pred__$1 = cljs.spec.maybe_spec.call(null,pred);
if(cljs.core.truth_(cljs.spec.spec_QMARK_.call(null,pred__$1))){
return cljs.spec.explain_STAR_.call(null,pred__$1,path,(function (){var temp__4655__auto__ = cljs.spec.spec_name.call(null,pred__$1);
if(cljs.core.truth_(temp__4655__auto__)){
var name = temp__4655__auto__;
return cljs.core.conj.call(null,via,name);
} else {
return via;
}
})(),in$,v);
} else {
return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.PersistentArrayMap(null, 5, [new cljs.core.Keyword(null,"path","path",-188191168),path,new cljs.core.Keyword(null,"pred","pred",1927423397),cljs.spec.abbrev.call(null,form),new cljs.core.Keyword(null,"val","val",128701612),v,new cljs.core.Keyword(null,"via","via",-1904457336),via,new cljs.core.Keyword(null,"in","in",-1531184865),in$], null)], null);
}
});
/**
* Do not call this directly, use 'spec' with a map argument
*/
cljs.spec.map_spec_impl = (function cljs$spec$map_spec_impl(p__11083){
var map__11123 = p__11083;
var map__11123__$1 = ((((!((map__11123 == null)))?((((map__11123.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__11123.cljs$core$ISeq$)))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__11123):map__11123);
var argm = map__11123__$1;
var opt = cljs.core.get.call(null,map__11123__$1,new cljs.core.Keyword(null,"opt","opt",-794706369));
var req_un = cljs.core.get.call(null,map__11123__$1,new cljs.core.Keyword(null,"req-un","req-un",1074571008));
var opt_un = cljs.core.get.call(null,map__11123__$1,new cljs.core.Keyword(null,"opt-un","opt-un",883442496));
var gfn = cljs.core.get.call(null,map__11123__$1,new cljs.core.Keyword(null,"gfn","gfn",791517474));
va