@atomist/clj-editors
Version:
editor functions that use rewrite-clj and other important things from the clojurescript ecosystem
333 lines (319 loc) • 23.1 kB
JavaScript
// Compiled by ClojureScript 1.10.238 {:target :nodejs}
goog.provide('spec_tools.visitor');
goog.require('cljs.core');
goog.require('cljs.spec.alpha');
goog.require('spec_tools.core');
goog.require('spec_tools.parse');
goog.require('spec_tools.impl');
goog.require('spec_tools.form');
spec_tools.visitor.spec_dispatch = (function spec_tools$visitor$spec_dispatch(spec,accept,options){
if(cljs.core.truth_((function (){var or__3922__auto__ = cljs.spec.alpha.spec_QMARK_.call(null,spec);
if(cljs.core.truth_(or__3922__auto__)){
return or__3922__auto__;
} else {
var or__3922__auto____$1 = cljs.spec.alpha.regex_QMARK_.call(null,spec);
if(cljs.core.truth_(or__3922__auto____$1)){
return or__3922__auto____$1;
} else {
return (spec instanceof cljs.core.Keyword);
}
}
})())){
var form = cljs.spec.alpha.form.call(null,spec);
if(cljs.core.not_EQ_.call(null,form,new cljs.core.Keyword("cljs.spec.alpha","unknown","cljs.spec.alpha/unknown",651034818))){
if(cljs.core.seq_QMARK_.call(null,form)){
return spec_tools.impl.normalize_symbol.call(null,cljs.core.first.call(null,form));
} else {
return spec_tools.visitor.spec_dispatch.call(null,form,accept,options);
}
} else {
return spec;
}
} else {
if(cljs.core.set_QMARK_.call(null,spec)){
return new cljs.core.Keyword("spec-tools.visitor","set","spec-tools.visitor/set",1650075415);
} else {
if(cljs.core.seq_QMARK_.call(null,spec)){
return spec_tools.impl.normalize_symbol.call(null,cljs.core.first.call(null,spec_tools.impl.strip_fn_if_needed.call(null,spec)));
} else {
if((spec instanceof cljs.core.Symbol)){
return spec_tools.impl.normalize_symbol.call(null,spec);
} else {
return spec_tools.impl.normalize_symbol.call(null,spec_tools.form.resolve_form.call(null,spec));
}
}
}
}
});
if(typeof spec_tools.visitor.visit_spec !== 'undefined'){
} else {
spec_tools.visitor.visit_spec = (function (){var method_table__4382__auto__ = cljs.core.atom.call(null,cljs.core.PersistentArrayMap.EMPTY);
var prefer_table__4383__auto__ = cljs.core.atom.call(null,cljs.core.PersistentArrayMap.EMPTY);
var method_cache__4384__auto__ = cljs.core.atom.call(null,cljs.core.PersistentArrayMap.EMPTY);
var cached_hierarchy__4385__auto__ = cljs.core.atom.call(null,cljs.core.PersistentArrayMap.EMPTY);
var hierarchy__4386__auto__ = cljs.core.get.call(null,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"default","default",-1987822328),new cljs.core.Keyword("spec-tools.visitor","default","spec-tools.visitor/default",49677361)], null),new cljs.core.Keyword(null,"hierarchy","hierarchy",-1053470341),cljs.core.get_global_hierarchy.call(null));
return (new cljs.core.MultiFn(cljs.core.symbol.call(null,"spec-tools.visitor","visit-spec"),spec_tools.visitor.spec_dispatch,new cljs.core.Keyword("spec-tools.visitor","default","spec-tools.visitor/default",49677361),hierarchy__4386__auto__,method_table__4382__auto__,prefer_table__4383__auto__,method_cache__4384__auto__,cached_hierarchy__4385__auto__));
})();
}
/**
* Walk a spec definition. Takes 2-3 arguments, the spec and the accept
* function, and optionally a options map, and returns the result of
* calling the accept function. Options map can be used to pass in context-
* specific information to to sub-visits & accepts.
*
* The accept function is called with 4 arguments: the dispatch term for the
* spec (see below), the spec itself, vector with the results of
* recursively walking the children of the spec and the options map.
*
* The dispatch term is one of the following
* * if the spec is a function call: a fully qualified symbol for the function
* with the following exceptions:
* - cljs.core symbols are converted to clojure.core symbols
* - cljs.spec.alpha symbols are converted to clojure.spec.alpha symbols
* * if the spec is a set: :spec-tools.visitor/set
* * otherwise: the spec itself
*/
spec_tools.visitor.visit = (function spec_tools$visitor$visit(var_args){
var G__28202 = arguments.length;
switch (G__28202) {
case 2:
return spec_tools.visitor.visit.cljs$core$IFn$_invoke$arity$2((arguments[(0)]),(arguments[(1)]));
break;
case 3:
return spec_tools.visitor.visit.cljs$core$IFn$_invoke$arity$3((arguments[(0)]),(arguments[(1)]),(arguments[(2)]));
break;
default:
throw (new Error(["Invalid arity: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(arguments.length)].join('')));
}
});
spec_tools.visitor.visit.cljs$core$IFn$_invoke$arity$2 = (function (spec,accept){
return spec_tools.visitor.visit.call(null,spec,accept,null);
});
spec_tools.visitor.visit.cljs$core$IFn$_invoke$arity$3 = (function (spec,accept,p__28203){
var map__28204 = p__28203;
var map__28204__$1 = ((((!((map__28204 == null)))?(((((map__28204.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__28204.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__28204):map__28204);
var options = map__28204__$1;
var visited = cljs.core.get.call(null,map__28204__$1,new cljs.core.Keyword("spec-tools.visitor","visited","spec-tools.visitor/visited",820668632));
if(cljs.core.not.call(null,cljs.core.get.call(null,visited,spec))){
var options__$1 = (((spec instanceof cljs.core.Keyword))?cljs.core.update.call(null,options,new cljs.core.Keyword("spec-tools.visitor","visited","spec-tools.visitor/visited",820668632),cljs.core.fnil.call(null,cljs.core.conj,cljs.core.PersistentHashSet.EMPTY),spec):options);
return spec_tools.visitor.visit_spec.call(null,spec,accept,options__$1);
} else {
return spec_tools.visitor.visit_spec.call(null,null,accept,options);
}
});
spec_tools.visitor.visit.cljs$lang$maxFixedArity = 3;
cljs.core._add_method.call(null,spec_tools.visitor.visit_spec,new cljs.core.Keyword("spec-tools.visitor","set","spec-tools.visitor/set",1650075415),(function (spec,accept,options){
return accept.call(null,new cljs.core.Keyword("spec-tools.visitor","set","spec-tools.visitor/set",1650075415),spec,cljs.core.vec.call(null,(((spec instanceof cljs.core.Keyword))?spec_tools.impl.extract_form.call(null,spec):spec)),options);
}));
cljs.core._add_method.call(null,spec_tools.visitor.visit_spec,new cljs.core.Symbol("clojure.spec.alpha","keys","clojure.spec.alpha/keys",-90227326,null),(function (spec,accept,options){
var keys = spec_tools.impl.extract_keys.call(null,spec_tools.impl.extract_form.call(null,spec));
return accept.call(null,new cljs.core.Symbol("clojure.spec.alpha","keys","clojure.spec.alpha/keys",-90227326,null),spec,cljs.core.mapv.call(null,((function (keys){
return (function (p1__28207_SHARP_){
return spec_tools.visitor.visit.call(null,p1__28207_SHARP_,accept,options);
});})(keys))
,keys),options);
}));
cljs.core._add_method.call(null,spec_tools.visitor.visit_spec,new cljs.core.Symbol("clojure.spec.alpha","or","clojure.spec.alpha/or",434904251,null),(function (spec,accept,options){
var vec__28209 = spec_tools.impl.extract_form.call(null,spec);
var seq__28210 = cljs.core.seq.call(null,vec__28209);
var first__28211 = cljs.core.first.call(null,seq__28210);
var seq__28210__$1 = cljs.core.next.call(null,seq__28210);
var _ = first__28211;
var map__28212 = seq__28210__$1;
var map__28212__$1 = ((((!((map__28212 == null)))?(((((map__28212.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__28212.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__28212):map__28212);
var inner_spec_map = map__28212__$1;
return accept.call(null,new cljs.core.Symbol("clojure.spec.alpha","or","clojure.spec.alpha/or",434904251,null),spec,cljs.core.mapv.call(null,((function (vec__28209,seq__28210,first__28211,seq__28210__$1,_,map__28212,map__28212__$1,inner_spec_map){
return (function (p1__28208_SHARP_){
return spec_tools.visitor.visit.call(null,p1__28208_SHARP_,accept,options);
});})(vec__28209,seq__28210,first__28211,seq__28210__$1,_,map__28212,map__28212__$1,inner_spec_map))
,cljs.core.vals.call(null,inner_spec_map)),options);
}));
cljs.core._add_method.call(null,spec_tools.visitor.visit_spec,new cljs.core.Symbol("clojure.spec.alpha","and","clojure.spec.alpha/and",-843882543,null),(function (spec,accept,options){
var vec__28215 = spec_tools.impl.extract_form.call(null,spec);
var seq__28216 = cljs.core.seq.call(null,vec__28215);
var first__28217 = cljs.core.first.call(null,seq__28216);
var seq__28216__$1 = cljs.core.next.call(null,seq__28216);
var _ = first__28217;
var inner_specs = seq__28216__$1;
return accept.call(null,new cljs.core.Symbol("clojure.spec.alpha","and","clojure.spec.alpha/and",-843882543,null),spec,cljs.core.mapv.call(null,((function (vec__28215,seq__28216,first__28217,seq__28216__$1,_,inner_specs){
return (function (p1__28214_SHARP_){
return spec_tools.visitor.visit.call(null,p1__28214_SHARP_,accept,options);
});})(vec__28215,seq__28216,first__28217,seq__28216__$1,_,inner_specs))
,inner_specs),options);
}));
cljs.core._add_method.call(null,spec_tools.visitor.visit_spec,new cljs.core.Symbol("clojure.spec.alpha","merge","clojure.spec.alpha/merge",472136035,null),(function (spec,accept,options){
var vec__28219 = spec_tools.impl.extract_form.call(null,spec);
var seq__28220 = cljs.core.seq.call(null,vec__28219);
var first__28221 = cljs.core.first.call(null,seq__28220);
var seq__28220__$1 = cljs.core.next.call(null,seq__28220);
var _ = first__28221;
var inner_specs = seq__28220__$1;
return accept.call(null,new cljs.core.Symbol("clojure.spec.alpha","merge","clojure.spec.alpha/merge",472136035,null),spec,cljs.core.mapv.call(null,((function (vec__28219,seq__28220,first__28221,seq__28220__$1,_,inner_specs){
return (function (p1__28218_SHARP_){
return spec_tools.visitor.visit.call(null,p1__28218_SHARP_,accept,options);
});})(vec__28219,seq__28220,first__28221,seq__28220__$1,_,inner_specs))
,inner_specs),options);
}));
cljs.core._add_method.call(null,spec_tools.visitor.visit_spec,new cljs.core.Symbol("clojure.spec.alpha","every","clojure.spec.alpha/every",-1327408778,null),(function (spec,accept,options){
var vec__28222 = spec_tools.impl.extract_form.call(null,spec);
var _ = cljs.core.nth.call(null,vec__28222,(0),null);
var inner_spec = cljs.core.nth.call(null,vec__28222,(1),null);
return accept.call(null,new cljs.core.Symbol("clojure.spec.alpha","every","clojure.spec.alpha/every",-1327408778,null),spec,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [spec_tools.visitor.visit.call(null,inner_spec,accept,options)], null),options);
}));
cljs.core._add_method.call(null,spec_tools.visitor.visit_spec,new cljs.core.Symbol("clojure.spec.alpha","every-kv","clojure.spec.alpha/every-kv",814515928,null),(function (spec,accept,options){
var vec__28226 = spec_tools.impl.extract_form.call(null,spec);
var _ = cljs.core.nth.call(null,vec__28226,(0),null);
var inner_spec1 = cljs.core.nth.call(null,vec__28226,(1),null);
var inner_spec2 = cljs.core.nth.call(null,vec__28226,(2),null);
return accept.call(null,new cljs.core.Symbol("clojure.spec.alpha","every-kv","clojure.spec.alpha/every-kv",814515928,null),spec,cljs.core.mapv.call(null,((function (vec__28226,_,inner_spec1,inner_spec2){
return (function (p1__28225_SHARP_){
return spec_tools.visitor.visit.call(null,p1__28225_SHARP_,accept,options);
});})(vec__28226,_,inner_spec1,inner_spec2))
,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [inner_spec1,inner_spec2], null)),options);
}));
cljs.core._add_method.call(null,spec_tools.visitor.visit_spec,new cljs.core.Symbol("clojure.spec.alpha","coll-of","clojure.spec.alpha/coll-of",-465249451,null),(function (spec,accept,options){
var form = spec_tools.impl.extract_form.call(null,spec);
var pred = cljs.core.second.call(null,form);
var map__28229 = spec_tools.parse.parse_spec.call(null,form);
var map__28229__$1 = ((((!((map__28229 == null)))?(((((map__28229.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__28229.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__28229):map__28229);
var type = cljs.core.get.call(null,map__28229__$1,new cljs.core.Keyword(null,"type","type",1174270348));
var dispatch = (function (){var G__28231 = type;
var G__28231__$1 = (((G__28231 instanceof cljs.core.Keyword))?G__28231.fqn:null);
switch (G__28231__$1) {
case "map":
return new cljs.core.Keyword("spec-tools.visitor","map-of","spec-tools.visitor/map-of",-972613908);
break;
case "set":
return new cljs.core.Keyword("spec-tools.visitor","set-of","spec-tools.visitor/set-of",983982444);
break;
case "vector":
return new cljs.core.Keyword("spec-tools.visitor","vector-of","spec-tools.visitor/vector-of",-1693991985);
break;
default:
throw (new Error(["No matching clause: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(G__28231__$1)].join('')));
}
})();
return accept.call(null,dispatch,spec,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [spec_tools.visitor.visit.call(null,pred,accept,options)], null),options);
}));
cljs.core._add_method.call(null,spec_tools.visitor.visit_spec,new cljs.core.Symbol("clojure.spec.alpha","map-of","clojure.spec.alpha/map-of",2125010727,null),(function (spec,accept,options){
var vec__28234 = spec_tools.impl.extract_form.call(null,spec);
var _ = cljs.core.nth.call(null,vec__28234,(0),null);
var k = cljs.core.nth.call(null,vec__28234,(1),null);
var v = cljs.core.nth.call(null,vec__28234,(2),null);
return accept.call(null,new cljs.core.Keyword("spec-tools.visitor","map-of","spec-tools.visitor/map-of",-972613908),spec,cljs.core.mapv.call(null,((function (vec__28234,_,k,v){
return (function (p1__28233_SHARP_){
return spec_tools.visitor.visit.call(null,p1__28233_SHARP_,accept,options);
});})(vec__28234,_,k,v))
,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [k,v], null)),options);
}));
cljs.core._add_method.call(null,spec_tools.visitor.visit_spec,new cljs.core.Symbol("clojure.spec.alpha","*","clojure.spec.alpha/*",-21649262,null),(function (spec,accept,options){
var vec__28237 = spec_tools.impl.extract_form.call(null,spec);
var _ = cljs.core.nth.call(null,vec__28237,(0),null);
var inner_spec = cljs.core.nth.call(null,vec__28237,(1),null);
return accept.call(null,new cljs.core.Symbol("clojure.spec.alpha","*","clojure.spec.alpha/*",-21649262,null),spec,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [spec_tools.visitor.visit.call(null,inner_spec,accept,options)], null),options);
}));
cljs.core._add_method.call(null,spec_tools.visitor.visit_spec,new cljs.core.Symbol("clojure.spec.alpha","+","clojure.spec.alpha/+",96423191,null),(function (spec,accept,options){
var vec__28240 = spec_tools.impl.extract_form.call(null,spec);
var _ = cljs.core.nth.call(null,vec__28240,(0),null);
var inner_spec = cljs.core.nth.call(null,vec__28240,(1),null);
return accept.call(null,new cljs.core.Symbol("clojure.spec.alpha","+","clojure.spec.alpha/+",96423191,null),spec,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [spec_tools.visitor.visit.call(null,inner_spec,accept,options)], null),options);
}));
cljs.core._add_method.call(null,spec_tools.visitor.visit_spec,new cljs.core.Symbol("clojure.spec.alpha","?","clojure.spec.alpha/?",-1775438615,null),(function (spec,accept,options){
var vec__28243 = spec_tools.impl.extract_form.call(null,spec);
var _ = cljs.core.nth.call(null,vec__28243,(0),null);
var inner_spec = cljs.core.nth.call(null,vec__28243,(1),null);
return accept.call(null,new cljs.core.Symbol("clojure.spec.alpha","?","clojure.spec.alpha/?",-1775438615,null),spec,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [spec_tools.visitor.visit.call(null,inner_spec,accept,options)], null),options);
}));
cljs.core._add_method.call(null,spec_tools.visitor.visit_spec,new cljs.core.Symbol("clojure.spec.alpha","alt","clojure.spec.alpha/alt",-612316618,null),(function (spec,accept,options){
var vec__28247 = spec_tools.impl.extract_form.call(null,spec);
var seq__28248 = cljs.core.seq.call(null,vec__28247);
var first__28249 = cljs.core.first.call(null,seq__28248);
var seq__28248__$1 = cljs.core.next.call(null,seq__28248);
var _ = first__28249;
var map__28250 = seq__28248__$1;
var map__28250__$1 = ((((!((map__28250 == null)))?(((((map__28250.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__28250.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__28250):map__28250);
var inner_spec_map = map__28250__$1;
return accept.call(null,new cljs.core.Symbol("clojure.spec.alpha","alt","clojure.spec.alpha/alt",-612316618,null),spec,cljs.core.mapv.call(null,((function (vec__28247,seq__28248,first__28249,seq__28248__$1,_,map__28250,map__28250__$1,inner_spec_map){
return (function (p1__28246_SHARP_){
return spec_tools.visitor.visit.call(null,p1__28246_SHARP_,accept,options);
});})(vec__28247,seq__28248,first__28249,seq__28248__$1,_,map__28250,map__28250__$1,inner_spec_map))
,cljs.core.vals.call(null,inner_spec_map)),options);
}));
cljs.core._add_method.call(null,spec_tools.visitor.visit_spec,new cljs.core.Symbol("clojure.spec.alpha","cat","clojure.spec.alpha/cat",-523389547,null),(function (spec,accept,options){
var vec__28253 = spec_tools.impl.extract_form.call(null,spec);
var seq__28254 = cljs.core.seq.call(null,vec__28253);
var first__28255 = cljs.core.first.call(null,seq__28254);
var seq__28254__$1 = cljs.core.next.call(null,seq__28254);
var _ = first__28255;
var map__28256 = seq__28254__$1;
var map__28256__$1 = ((((!((map__28256 == null)))?(((((map__28256.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__28256.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__28256):map__28256);
var inner_spec_map = map__28256__$1;
return accept.call(null,new cljs.core.Symbol("clojure.spec.alpha","cat","clojure.spec.alpha/cat",-523389547,null),spec,cljs.core.mapv.call(null,((function (vec__28253,seq__28254,first__28255,seq__28254__$1,_,map__28256,map__28256__$1,inner_spec_map){
return (function (p1__28252_SHARP_){
return spec_tools.visitor.visit.call(null,p1__28252_SHARP_,accept,options);
});})(vec__28253,seq__28254,first__28255,seq__28254__$1,_,map__28256,map__28256__$1,inner_spec_map))
,cljs.core.vals.call(null,inner_spec_map)),options);
}));
cljs.core._add_method.call(null,spec_tools.visitor.visit_spec,new cljs.core.Symbol("clojure.spec.alpha","&","clojure.spec.alpha/&",704695533,null),(function (spec,accept,options){
var vec__28258 = spec_tools.impl.extract_form.call(null,spec);
var _ = cljs.core.nth.call(null,vec__28258,(0),null);
var inner_spec = cljs.core.nth.call(null,vec__28258,(1),null);
return accept.call(null,new cljs.core.Symbol("clojure.spec.alpha","&","clojure.spec.alpha/&",704695533,null),spec,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [spec_tools.visitor.visit.call(null,inner_spec,accept,options)], null),options);
}));
cljs.core._add_method.call(null,spec_tools.visitor.visit_spec,new cljs.core.Symbol("clojure.spec.alpha","tuple","clojure.spec.alpha/tuple",800350846,null),(function (spec,accept,options){
var vec__28262 = spec_tools.impl.extract_form.call(null,spec);
var seq__28263 = cljs.core.seq.call(null,vec__28262);
var first__28264 = cljs.core.first.call(null,seq__28263);
var seq__28263__$1 = cljs.core.next.call(null,seq__28263);
var _ = first__28264;
var inner_specs = seq__28263__$1;
return accept.call(null,new cljs.core.Symbol("clojure.spec.alpha","tuple","clojure.spec.alpha/tuple",800350846,null),spec,cljs.core.mapv.call(null,((function (vec__28262,seq__28263,first__28264,seq__28263__$1,_,inner_specs){
return (function (p1__28261_SHARP_){
return spec_tools.visitor.visit.call(null,p1__28261_SHARP_,accept,options);
});})(vec__28262,seq__28263,first__28264,seq__28263__$1,_,inner_specs))
,inner_specs),options);
}));
cljs.core._add_method.call(null,spec_tools.visitor.visit_spec,new cljs.core.Symbol("clojure.spec.alpha","keys*","clojure.spec.alpha/keys*",-1790941751,null),(function (spec,accept,options){
var keys = spec_tools.impl.extract_keys.call(null,spec_tools.impl.extract_form.call(null,spec));
return accept.call(null,new cljs.core.Symbol("clojure.spec.alpha","keys*","clojure.spec.alpha/keys*",-1790941751,null),spec,cljs.core.mapv.call(null,((function (keys){
return (function (p1__28265_SHARP_){
return spec_tools.visitor.visit.call(null,p1__28265_SHARP_,accept,options);
});})(keys))
,keys),options);
}));
cljs.core._add_method.call(null,spec_tools.visitor.visit_spec,new cljs.core.Symbol("clojure.spec.alpha","nilable","clojure.spec.alpha/nilable",-1718644550,null),(function (spec,accept,options){
var vec__28266 = spec_tools.impl.extract_form.call(null,spec);
var _ = cljs.core.nth.call(null,vec__28266,(0),null);
var inner_spec = cljs.core.nth.call(null,vec__28266,(1),null);
return accept.call(null,new cljs.core.Symbol("clojure.spec.alpha","nilable","clojure.spec.alpha/nilable",-1718644550,null),spec,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [spec_tools.visitor.visit.call(null,inner_spec,accept,options)], null),options);
}));
cljs.core._add_method.call(null,spec_tools.visitor.visit_spec,new cljs.core.Symbol("spec-tools.core","spec","spec-tools.core/spec",-497332036,null),(function (spec,accept,options){
var vec__28269 = spec_tools.impl.extract_form.call(null,spec);
var _ = cljs.core.nth.call(null,vec__28269,(0),null);
var map__28272 = cljs.core.nth.call(null,vec__28269,(1),null);
var map__28272__$1 = ((((!((map__28272 == null)))?(((((map__28272.cljs$lang$protocol_mask$partition0$ & (64))) || ((cljs.core.PROTOCOL_SENTINEL === map__28272.cljs$core$ISeq$))))?true:false):false))?cljs.core.apply.call(null,cljs.core.hash_map,map__28272):map__28272);
var inner_spec = cljs.core.get.call(null,map__28272__$1,new cljs.core.Keyword(null,"spec","spec",347520401));
return accept.call(null,new cljs.core.Keyword("spec-tools.visitor","spec","spec-tools.visitor/spec",1770325200),spec,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [spec_tools.visitor.visit.call(null,inner_spec,accept,options)], null),options);
}));
cljs.core._add_method.call(null,spec_tools.visitor.visit_spec,new cljs.core.Keyword("spec-tools.visitor","default","spec-tools.visitor/default",49677361),(function (spec,accept,options){
return accept.call(null,spec_tools.visitor.spec_dispatch.call(null,spec,accept,options),spec,null,options);
}));
/**
* a visitor that collects all registered specs. Returns
* a map of spec-name => spec.
*/
spec_tools.visitor.spec_collector = (function spec_tools$visitor$spec_collector(){
var specs = cljs.core.atom.call(null,cljs.core.PersistentArrayMap.EMPTY);
return ((function (specs){
return (function (_,spec,___$1,___$2){
var temp__5455__auto__ = cljs.spec.alpha.get_spec.call(null,spec);
if(cljs.core.truth_(temp__5455__auto__)){
var s = temp__5455__auto__;
return cljs.core.swap_BANG_.call(null,specs,cljs.core.assoc,spec,s);
} else {
return cljs.core.deref.call(null,specs);
}
});
;})(specs))
});
//# sourceMappingURL=visitor.js.map