@atomist/clj-editors
Version:
editor functions that use rewrite-clj and other important things from the clojurescript ecosystem
171 lines (157 loc) • 7.58 kB
JavaScript
// Compiled by ClojureScript 1.10.238 {:target :nodejs}
goog.provide('rewrite_clj.zip.editz');
goog.require('cljs.core');
goog.require('rewrite_clj.zip.base');
goog.require('rewrite_clj.zip.move');
goog.require('rewrite_clj.zip.removez');
goog.require('rewrite_clj.zip.utils');
goog.require('rewrite_clj.zip.whitespace');
goog.require('rewrite_clj.node');
goog.require('clojure.zip');
/**
* Replace the node at the given location with one representing
* the given value. (The value will be coerced to a node if
* possible.)
*/
rewrite_clj.zip.editz.replace = (function rewrite_clj$zip$editz$replace(zloc,value){
return clojure.zip.replace.call(null,zloc,rewrite_clj.node.coerce.call(null,value));
});
/**
* Create s-expression from node, apply the function and create
* node from the result.
*/
rewrite_clj.zip.editz.edit_node = (function rewrite_clj$zip$editz$edit_node(node,f){
return rewrite_clj.node.coerce.call(null,f.call(null,rewrite_clj.node.sexpr.call(null,node)));
});
/**
* Apply the given function to the s-expression at the given
* location, using its result to replace the node there. (The
* result will be coerced to a node if possible.)
*/
rewrite_clj.zip.editz.edit = (function rewrite_clj$zip$editz$edit(var_args){
var args__4502__auto__ = [];
var len__4499__auto___22698 = arguments.length;
var i__4500__auto___22699 = (0);
while(true){
if((i__4500__auto___22699 < len__4499__auto___22698)){
args__4502__auto__.push((arguments[i__4500__auto___22699]));
var G__22700 = (i__4500__auto___22699 + (1));
i__4500__auto___22699 = G__22700;
continue;
} else {
}
break;
}
var argseq__4503__auto__ = ((((2) < args__4502__auto__.length))?(new cljs.core.IndexedSeq(args__4502__auto__.slice((2)),(0),null)):null);
return rewrite_clj.zip.editz.edit.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__4503__auto__);
});
rewrite_clj.zip.editz.edit.cljs$core$IFn$_invoke$arity$variadic = (function (zloc,f,args){
return clojure.zip.edit.call(null,zloc,rewrite_clj.zip.editz.edit_node,(function (p1__22694_SHARP_){
return cljs.core.apply.call(null,f,p1__22694_SHARP_,args);
}));
});
rewrite_clj.zip.editz.edit.cljs$lang$maxFixedArity = (2);
/** @this {Function} */
rewrite_clj.zip.editz.edit.cljs$lang$applyTo = (function (seq22695){
var G__22696 = cljs.core.first.call(null,seq22695);
var seq22695__$1 = cljs.core.next.call(null,seq22695);
var G__22697 = cljs.core.first.call(null,seq22695__$1);
var seq22695__$2 = cljs.core.next.call(null,seq22695__$1);
var self__4486__auto__ = this;
return self__4486__auto__.cljs$core$IFn$_invoke$arity$variadic(G__22696,G__22697,seq22695__$2);
});
/**
* Splice the given node, i.e. merge its children into the current one
* (akin to Clojure's `unquote-splicing` macro: `~@...`).
* - if the node is not one that can have children, no modification will
* be performed.
* - if the node has no or only whitespace children, it will be removed.
* - otherwise, splicing will be performed, moving the zipper to the first
* non-whitespace child afterwards.
*
*/
rewrite_clj.zip.editz.splice = (function rewrite_clj$zip$editz$splice(zloc){
if(cljs.core.truth_(clojure.zip.branch_QMARK_.call(null,zloc))){
var temp__5455__auto__ = cljs.core.seq.call(null,cljs.core.drop_while.call(null,rewrite_clj.node.whitespace_QMARK_,cljs.core.reverse.call(null,cljs.core.drop_while.call(null,rewrite_clj.node.whitespace_QMARK_,clojure.zip.children.call(null,zloc)))));
if(temp__5455__auto__){
var children = temp__5455__auto__;
var loc = rewrite_clj.zip.utils.remove_and_move_right.call(null,cljs.core.reduce.call(null,clojure.zip.insert_right,zloc,children));
var or__3922__auto__ = rewrite_clj.zip.whitespace.skip_whitespace.call(null,loc);
if(cljs.core.truth_(or__3922__auto__)){
return or__3922__auto__;
} else {
return loc;
}
} else {
return rewrite_clj.zip.removez.remove.call(null,zloc);
}
} else {
return zloc;
}
});
rewrite_clj.zip.editz.edit_token = (function rewrite_clj$zip$editz$edit_token(zloc,str_fn){
var e = rewrite_clj.zip.base.sexpr.call(null,zloc);
var e_SINGLEQUOTE_ = ((typeof e === 'string')?str_fn.call(null,e):(((e instanceof cljs.core.Keyword))?cljs.core.keyword.call(null,cljs.core.namespace.call(null,e),str_fn.call(null,cljs.core.name.call(null,e))):(((e instanceof cljs.core.Symbol))?cljs.core.symbol.call(null,cljs.core.namespace.call(null,e),str_fn.call(null,cljs.core.name.call(null,e))):null)));
return clojure.zip.replace.call(null,zloc,rewrite_clj.node.token_node.call(null,e_SINGLEQUOTE_));
});
rewrite_clj.zip.editz.edit_multi_line = (function rewrite_clj$zip$editz$edit_multi_line(zloc,line_fn){
var n = cljs.core.update_in.call(null,clojure.zip.node.call(null,zloc),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"lines","lines",-700165781)], null),cljs.core.comp.call(null,line_fn,cljs.core.vec));
return clojure.zip.replace.call(null,zloc,n);
});
rewrite_clj.zip.editz.prefix = (function rewrite_clj$zip$editz$prefix(zloc,s){
var G__22703 = rewrite_clj.zip.base.tag.call(null,zloc);
var G__22703__$1 = (((G__22703 instanceof cljs.core.Keyword))?G__22703.fqn:null);
switch (G__22703__$1) {
case "token":
return rewrite_clj.zip.editz.edit_token.call(null,zloc,((function (G__22703,G__22703__$1){
return (function (p1__22701_SHARP_){
return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(s),cljs.core.str.cljs$core$IFn$_invoke$arity$1(p1__22701_SHARP_)].join('');
});})(G__22703,G__22703__$1))
);
break;
case "multi-line":
return rewrite_clj.zip.editz.edit_multi_line.call(null,zloc,((function (G__22703,G__22703__$1){
return (function (lines){
if(cljs.core.empty_QMARK_.call(null,lines)){
return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [s], null);
} else {
return cljs.core.update_in.call(null,lines,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [(0)], null),((function (G__22703,G__22703__$1){
return (function (p1__22702_SHARP_){
return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(s),cljs.core.str.cljs$core$IFn$_invoke$arity$1(p1__22702_SHARP_)].join('');
});})(G__22703,G__22703__$1))
);
}
});})(G__22703,G__22703__$1))
);
break;
default:
throw (new Error(["No matching clause: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(G__22703__$1)].join('')));
}
});
rewrite_clj.zip.editz.suffix = (function rewrite_clj$zip$editz$suffix(zloc,s){
var G__22706 = rewrite_clj.zip.base.tag.call(null,zloc);
var G__22706__$1 = (((G__22706 instanceof cljs.core.Keyword))?G__22706.fqn:null);
switch (G__22706__$1) {
case "token":
return rewrite_clj.zip.editz.edit_token.call(null,zloc,((function (G__22706,G__22706__$1){
return (function (p1__22705_SHARP_){
return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(p1__22705_SHARP_),cljs.core.str.cljs$core$IFn$_invoke$arity$1(s)].join('');
});})(G__22706,G__22706__$1))
);
break;
case "multi-line":
return rewrite_clj.zip.editz.edit_multi_line.call(null,zloc,((function (G__22706,G__22706__$1){
return (function (lines){
if(cljs.core.empty_QMARK_.call(null,lines)){
return new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [s], null);
} else {
return cljs.core.concat.call(null,cljs.core.butlast.call(null,lines),[cljs.core.str.cljs$core$IFn$_invoke$arity$1(cljs.core.last.call(null,lines)),cljs.core.str.cljs$core$IFn$_invoke$arity$1(s)].join(''));
}
});})(G__22706,G__22706__$1))
);
break;
default:
throw (new Error(["No matching clause: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(G__22706__$1)].join('')));
}
});
//# sourceMappingURL=editz.js.map