@atomist/clj-editors
Version:
We build a node module `@atomist/clj-editors` here. This allows us to construct clojure editors using `rewrite-cljs`. After adding this dependency, the node application will have access to javascript functions transpiled from clojurescript.
169 lines (155 loc) • 7.53 kB
JavaScript
// Compiled by ClojureScript 1.9.946 {: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__9056__auto__ = [];
var len__9049__auto___11769 = arguments.length;
var i__9050__auto___11770 = (0);
while(true){
if((i__9050__auto___11770 < len__9049__auto___11769)){
args__9056__auto__.push((arguments[i__9050__auto___11770]));
var G__11775 = (i__9050__auto___11770 + (1));
i__9050__auto___11770 = G__11775;
continue;
} else {
}
break;
}
var argseq__9057__auto__ = ((((2) < args__9056__auto__.length))?(new cljs.core.IndexedSeq(args__9056__auto__.slice((2)),(0),null)):null);
return rewrite_clj.zip.editz.edit.cljs$core$IFn$_invoke$arity$variadic((arguments[(0)]),(arguments[(1)]),argseq__9057__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__11746_SHARP_){
return cljs.core.apply.call(null,f,p1__11746_SHARP_,args);
}));
});
rewrite_clj.zip.editz.edit.cljs$lang$maxFixedArity = (2);
rewrite_clj.zip.editz.edit.cljs$lang$applyTo = (function (seq11748){
var G__11749 = cljs.core.first.call(null,seq11748);
var seq11748__$1 = cljs.core.next.call(null,seq11748);
var G__11750 = cljs.core.first.call(null,seq11748__$1);
var seq11748__$2 = cljs.core.next.call(null,seq11748__$1);
return rewrite_clj.zip.editz.edit.cljs$core$IFn$_invoke$arity$variadic(G__11749,G__11750,seq11748__$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__4655__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__4655__auto__){
var children = temp__4655__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__7878__auto__ = rewrite_clj.zip.whitespace.skip_whitespace.call(null,loc);
if(cljs.core.truth_(or__7878__auto__)){
return or__7878__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__11881 = rewrite_clj.zip.base.tag.call(null,zloc);
var G__11881__$1 = (((G__11881 instanceof cljs.core.Keyword))?G__11881.fqn:null);
switch (G__11881__$1) {
case "token":
return rewrite_clj.zip.editz.edit_token.call(null,zloc,((function (G__11881,G__11881__$1){
return (function (p1__11877_SHARP_){
return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(s),cljs.core.str.cljs$core$IFn$_invoke$arity$1(p1__11877_SHARP_)].join('');
});})(G__11881,G__11881__$1))
);
break;
case "multi-line":
return rewrite_clj.zip.editz.edit_multi_line.call(null,zloc,((function (G__11881,G__11881__$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__11881,G__11881__$1){
return (function (p1__11879_SHARP_){
return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(s),cljs.core.str.cljs$core$IFn$_invoke$arity$1(p1__11879_SHARP_)].join('');
});})(G__11881,G__11881__$1))
);
}
});})(G__11881,G__11881__$1))
);
break;
default:
throw (new Error(["No matching clause: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(G__11881__$1)].join('')));
}
});
rewrite_clj.zip.editz.suffix = (function rewrite_clj$zip$editz$suffix(zloc,s){
var G__11929 = rewrite_clj.zip.base.tag.call(null,zloc);
var G__11929__$1 = (((G__11929 instanceof cljs.core.Keyword))?G__11929.fqn:null);
switch (G__11929__$1) {
case "token":
return rewrite_clj.zip.editz.edit_token.call(null,zloc,((function (G__11929,G__11929__$1){
return (function (p1__11926_SHARP_){
return [cljs.core.str.cljs$core$IFn$_invoke$arity$1(p1__11926_SHARP_),cljs.core.str.cljs$core$IFn$_invoke$arity$1(s)].join('');
});})(G__11929,G__11929__$1))
);
break;
case "multi-line":
return rewrite_clj.zip.editz.edit_multi_line.call(null,zloc,((function (G__11929,G__11929__$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__11929,G__11929__$1))
);
break;
default:
throw (new Error(["No matching clause: ",cljs.core.str.cljs$core$IFn$_invoke$arity$1(G__11929__$1)].join('')));
}
});
//# sourceMappingURL=editz.js.map