diff --git a/ruby instarepl_compiled.js b/ruby instarepl_compiled.js index 8efc0ad..65bb2d9 100644 --- a/ruby instarepl_compiled.js +++ b/ruby instarepl_compiled.js @@ -1,57 +1,46 @@ if(!lt.util.load.provided_QMARK_('lt.objs.langs.ruby')) { goog.provide('lt.objs.langs.ruby'); goog.require('cljs.core'); -goog.require('crate.binding'); -goog.require('lt.util.cljs'); +goog.require('lt.object'); +goog.require('lt.object'); +lt.object.object_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","ruby-lang","lt.objs.langs.ruby/ruby-lang",3812976763),new cljs.core.Keyword(null,"tags","tags",1017456523),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"ruby.lang","ruby.lang",3458842868),null], null), null)); +lt.objs.langs.ruby.ruby = lt.object.create.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","ruby-lang","lt.objs.langs.ruby/ruby-lang",3812976763)); +} +if(!lt.util.load.provided_QMARK_('lt.objs.langs.ruby.client')) { +goog.provide('lt.objs.langs.ruby.client'); +goog.require('cljs.core'); +goog.require('lt.objs.langs.ruby'); goog.require('lt.objs.plugins'); goog.require('lt.objs.files'); -goog.require('lt.util.dom'); -goog.require('lt.objs.platform'); +goog.require('lt.objs.langs.ruby'); goog.require('lt.objs.popup'); goog.require('lt.objs.dialogs'); goog.require('lt.objs.popup'); -goog.require('crate.core'); goog.require('lt.objs.notifos'); goog.require('lt.objs.proc'); goog.require('lt.objs.notifos'); -goog.require('lt.util.dom'); -goog.require('lt.objs.editor.pool'); -goog.require('clojure.string'); -goog.require('lt.util.cljs'); goog.require('lt.objs.command'); -goog.require('lt.objs.platform'); goog.require('lt.objs.files'); goog.require('lt.objs.clients.tcp'); goog.require('lt.objs.sidebar.clients'); goog.require('lt.objs.plugins'); -goog.require('lt.plugins.watches'); -goog.require('lt.objs.eval'); goog.require('lt.objs.clients'); goog.require('lt.objs.clients.tcp'); goog.require('lt.util.load'); -goog.require('clojure.string'); -goog.require('lt.plugins.watches'); -goog.require('crate.binding'); -goog.require('lt.objs.editor'); +goog.require('lt.objs.langs.ruby'); goog.require('lt.object'); goog.require('lt.object'); goog.require('lt.objs.dialogs'); goog.require('lt.util.load'); -goog.require('lt.objs.console'); goog.require('lt.objs.proc'); -goog.require('lt.objs.console'); -goog.require('crate.core'); -goog.require('lt.objs.eval'); goog.require('lt.objs.clients'); -goog.require('lt.objs.editor.pool'); goog.require('lt.objs.sidebar.clients'); goog.require('lt.objs.command'); -goog.require('lt.objs.editor'); -lt.objs.langs.ruby.plugin_dir = lt.objs.plugins.find_plugin.call(null,"Ruby Instarepl"); -lt.objs.langs.ruby.shell = lt.util.load.node_module.call(null,"shelljs"); -lt.objs.langs.ruby.rb_path = lt.objs.files.join.call(null,lt.objs.langs.ruby.plugin_dir,"rb-src/lt_client.rb"); -lt.objs.langs.ruby.runner_path = lt.objs.files.join.call(null,lt.objs.langs.ruby.plugin_dir,"rb-src/lt_client_runner.sh"); -lt.objs.langs.ruby.__BEH__on_out = (function __BEH__on_out(this$,data){var out = data.toString();lt.object.update_BANG_.call(null,this$,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"buffer","buffer",3930752946)], null),cljs.core.str,out); +lt.objs.langs.ruby.client.plugin_dir = lt.objs.plugins.find_plugin.call(null,"Ruby Instarepl"); +lt.objs.langs.ruby.client.shell = lt.util.load.node_module.call(null,"shelljs"); +lt.objs.langs.ruby.client.rb_path = lt.objs.files.join.call(null,lt.objs.langs.ruby.client.plugin_dir,"rb-src/lt_client.rb"); +lt.objs.langs.ruby.client.runner_path = lt.objs.files.join.call(null,lt.objs.langs.ruby.client.plugin_dir,"rb-src/lt_client_runner.sh"); +lt.objs.langs.ruby.client.__BEH__on_out = (function __BEH__on_out(this$,data){var out = data.toString();lt.object.update_BANG_.call(null,this$,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"buffer","buffer",3930752946)], null),cljs.core.str,out); if((out.indexOf("Connected") > -1)) {lt.objs.notifos.done_working.call(null); return lt.object.merge_BANG_.call(null,this$,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"connected","connected",4729661051),true], null)); @@ -59,15 +48,15 @@ return lt.object.merge_BANG_.call(null,this$,new cljs.core.PersistentArrayMap(nu {return lt.object.update_BANG_.call(null,this$,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"buffer","buffer",3930752946)], null),cljs.core.str,data); } }); -lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","on-out","lt.objs.langs.ruby/on-out",2974479452),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.__BEH__on_out,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"proc.out","proc.out",4302083112),null], null), null)); -lt.objs.langs.ruby.__BEH__on_error = (function __BEH__on_error(this$,data){var out = data.toString();if((new cljs.core.Keyword(null,"buffer","buffer",3930752946).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,this$)).indexOf("Connected") > -1)) +lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby.client","on-out","lt.objs.langs.ruby.client/on-out",4071312410),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.client.__BEH__on_out,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"proc.out","proc.out",4302083112),null], null), null)); +lt.objs.langs.ruby.client.__BEH__on_error = (function __BEH__on_error(this$,data){var out = data.toString();if((new cljs.core.Keyword(null,"buffer","buffer",3930752946).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,this$)).indexOf("Connected") > -1)) {return null; } else {return lt.object.update_BANG_.call(null,this$,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"buffer","buffer",3930752946)], null),cljs.core.str,data); } }); -lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","on-error","lt.objs.langs.ruby/on-error",1840991010),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.__BEH__on_error,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"proc.error","proc.error",4143512802),null], null), null)); -lt.objs.langs.ruby.__BEH__on_exit = (function __BEH__on_exit(this$,data){if(cljs.core.truth_(new cljs.core.Keyword(null,"connected","connected",4729661051).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,this$)))) +lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby.client","on-error","lt.objs.langs.ruby.client/on-error",658257384),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.client.__BEH__on_error,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"proc.error","proc.error",4143512802),null], null), null)); +lt.objs.langs.ruby.client.__BEH__on_exit = (function __BEH__on_exit(this$,data){if(cljs.core.truth_(new cljs.core.Keyword(null,"connected","connected",4729661051).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,this$)))) {} else {lt.objs.notifos.done_working.call(null); lt.objs.popup.popup_BANG_.call(null,new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"header","header",4087600639),"We couldn't connect.",new cljs.core.Keyword(null,"body","body",1016933652),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"span","span",1017440956),"Looks like there was an issue trying to connect\n to the project. Here's what we got:",new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"pre","pre",1014015509),new cljs.core.Keyword(null,"buffer","buffer",3930752946).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,this$))], null)], null),new cljs.core.Keyword(null,"buttons","buttons",1255256819),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"label","label",1116631654),"close"], null)], null)], null)); @@ -76,40 +65,40 @@ lt.objs.clients.rem_BANG_.call(null,new cljs.core.Keyword(null,"client","client" lt.objs.proc.kill_all.call(null,new cljs.core.Keyword(null,"procs","procs",1120844623).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,this$))); return lt.object.destroy_BANG_.call(null,this$); }); -lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","on-exit","lt.objs.langs.ruby/on-exit",4700699216),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.__BEH__on_exit,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"proc.exit","proc.exit",4162906152),null], null), null)); -lt.object.object_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","connecting-notifier","lt.objs.langs.ruby/connecting-notifier",1639010209),new cljs.core.Keyword(null,"triggers","triggers",2516997421),cljs.core.PersistentVector.EMPTY,new cljs.core.Keyword(null,"behaviors","behaviors",607554515),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword("lt.objs.langs.ruby","on-exit","lt.objs.langs.ruby/on-exit",4700699216),new cljs.core.Keyword("lt.objs.langs.ruby","on-error","lt.objs.langs.ruby/on-error",1840991010),new cljs.core.Keyword("lt.objs.langs.ruby","on-out","lt.objs.langs.ruby/on-out",2974479452)], null),new cljs.core.Keyword(null,"init","init",1017141378),(function (this$,client){lt.object.merge_BANG_.call(null,this$,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"client","client",3951159101),client,new cljs.core.Keyword(null,"buffer","buffer",3930752946),""], null)); +lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby.client","on-exit","lt.objs.langs.ruby.client/on-exit",3243173398),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.client.__BEH__on_exit,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"proc.exit","proc.exit",4162906152),null], null), null)); +lt.object.object_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby.client","connecting-notifier","lt.objs.langs.ruby.client/connecting-notifier",584460901),new cljs.core.Keyword(null,"triggers","triggers",2516997421),cljs.core.PersistentVector.EMPTY,new cljs.core.Keyword(null,"behaviors","behaviors",607554515),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword("lt.objs.langs.ruby.client","on-exit","lt.objs.langs.ruby.client/on-exit",3243173398),new cljs.core.Keyword("lt.objs.langs.ruby.client","on-error","lt.objs.langs.ruby.client/on-error",658257384),new cljs.core.Keyword("lt.objs.langs.ruby.client","on-out","lt.objs.langs.ruby.client/on-out",4071312410)], null),new cljs.core.Keyword(null,"init","init",1017141378),(function (this$,client){lt.object.merge_BANG_.call(null,this$,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"client","client",3951159101),client,new cljs.core.Keyword(null,"buffer","buffer",3930752946),""], null)); return null; })); -lt.objs.langs.ruby.escape_spaces = (function escape_spaces(s){if(cljs.core._EQ_.call(null,lt.objs.files.separator,"\\")) +lt.objs.langs.ruby.client.escape_spaces = (function escape_spaces(s){if(cljs.core._EQ_.call(null,lt.objs.files.separator,"\\")) {return [cljs.core.str("\""),cljs.core.str(s),cljs.core.str("\"")].join(''); } else {return s; } }); -lt.objs.langs.ruby.bash_escape_spaces = (function bash_escape_spaces(s){return clojure.string.replace.call(null,s," ","\\ "); +lt.objs.langs.ruby.client.bash_escape_spaces = (function bash_escape_spaces(s){return clojure.string.replace.call(null,s," ","\\ "); }); -lt.objs.langs.ruby.run_rb = (function run_rb(p__9188){var map__9190 = p__9188;var map__9190__$1 = ((cljs.core.seq_QMARK_.call(null,map__9190))?cljs.core.apply.call(null,cljs.core.hash_map,map__9190):map__9190);var info = map__9190__$1;var client = cljs.core.get.call(null,map__9190__$1,new cljs.core.Keyword(null,"client","client",3951159101));var name = cljs.core.get.call(null,map__9190__$1,new cljs.core.Keyword(null,"name","name",1017277949));var project_path = cljs.core.get.call(null,map__9190__$1,new cljs.core.Keyword(null,"project-path","project-path",1907176907));var path = cljs.core.get.call(null,map__9190__$1,new cljs.core.Keyword(null,"path","path",1017337751));var n = lt.objs.notifos.working.call(null,"Connecting..");var obj = lt.object.create.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","connecting-notifier","lt.objs.langs.ruby/connecting-notifier",1639010209),client);var use_runner = (function (){var or__6755__auto__ = new cljs.core.Keyword("lt.objs.langs.ruby","use-rvm?","lt.objs.langs.ruby/use-rvm?",3656895808).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,lt.objs.langs.ruby.ruby));if(cljs.core.truth_(or__6755__auto__)) +lt.objs.langs.ruby.client.run_rb = (function run_rb(p__8195){var map__8197 = p__8195;var map__8197__$1 = ((cljs.core.seq_QMARK_.call(null,map__8197))?cljs.core.apply.call(null,cljs.core.hash_map,map__8197):map__8197);var info = map__8197__$1;var client = cljs.core.get.call(null,map__8197__$1,new cljs.core.Keyword(null,"client","client",3951159101));var name = cljs.core.get.call(null,map__8197__$1,new cljs.core.Keyword(null,"name","name",1017277949));var project_path = cljs.core.get.call(null,map__8197__$1,new cljs.core.Keyword(null,"project-path","project-path",1907176907));var path = cljs.core.get.call(null,map__8197__$1,new cljs.core.Keyword(null,"path","path",1017337751));var n = lt.objs.notifos.working.call(null,"Connecting..");var obj = lt.object.create.call(null,new cljs.core.Keyword("lt.objs.langs.ruby.client","connecting-notifier","lt.objs.langs.ruby.client/connecting-notifier",584460901),client);var use_runner = (function (){var or__6755__auto__ = new cljs.core.Keyword("lt.objs.langs.ruby.client","use-rvm?","lt.objs.langs.ruby.client/use-rvm?",4756059398).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,lt.objs.langs.ruby.ruby));if(cljs.core.truth_(or__6755__auto__)) {return or__6755__auto__; } else -{return new cljs.core.Keyword("lt.objs.langs.ruby","use-rbenv?","lt.objs.langs.ruby/use-rbenv?",615998644).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,lt.objs.langs.ruby.ruby)); +{return new cljs.core.Keyword("lt.objs.langs.ruby.client","use-rbenv?","lt.objs.langs.ruby.client/use-rbenv?",1607909234).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,lt.objs.langs.ruby.ruby)); } -})();var keys__GT_env = new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword("lt.objs.langs.ruby","use-rbenv?","lt.objs.langs.ruby/use-rbenv?",615998644),new cljs.core.Keyword(null,"LT_USE_RBENV","LT_USE_RBENV",3640591680),new cljs.core.Keyword("lt.objs.langs.ruby","use-rvm?","lt.objs.langs.ruby/use-rvm?",3656895808),new cljs.core.Keyword(null,"LT_USE_RVM","LT_USE_RVM",4685907820),new cljs.core.Keyword("lt.objs.langs.ruby","enable-client-logging?","lt.objs.langs.ruby/enable-client-logging?",1197315652),new cljs.core.Keyword(null,"LT_ENABLE_CLIENT_LOGGING","LT_ENABLE_CLIENT_LOGGING",1714721026)], null);var env = cljs.core.zipmap.call(null,cljs.core.map.call(null,keys__GT_env,cljs.core.keys.call(null,cljs.core.select_keys.call(null,cljs.core.deref.call(null,lt.objs.langs.ruby.ruby),cljs.core.keys.call(null,keys__GT_env)))),cljs.core.cycle.call(null,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [true], null)));var env__$1 = (cljs.core.truth_(new cljs.core.Keyword("lt.objs.langs.ruby","rvm-path","lt.objs.langs.ruby/rvm-path",1422692051).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,lt.objs.langs.ruby.ruby)))?cljs.core.assoc.call(null,env,new cljs.core.Keyword(null,"LT_RVM_PATH","LT_RVM_PATH",839899236),new cljs.core.Keyword("lt.objs.langs.ruby","rvm-path","lt.objs.langs.ruby/rvm-path",1422692051).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,lt.objs.langs.ruby.ruby))):env);var command = (cljs.core.truth_(use_runner)?"bash":(function (){var or__6755__auto__ = new cljs.core.Keyword("lt.objs.langs.ruby","ruby-exe","lt.objs.langs.ruby/ruby-exe",1735754269).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,lt.objs.langs.ruby.ruby));if(cljs.core.truth_(or__6755__auto__)) +})();var keys__GT_env = new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword("lt.objs.langs.ruby.client","use-rbenv?","lt.objs.langs.ruby.client/use-rbenv?",1607909234),new cljs.core.Keyword(null,"LT_USE_RBENV","LT_USE_RBENV",3640591680),new cljs.core.Keyword("lt.objs.langs.ruby.client","use-rvm?","lt.objs.langs.ruby.client/use-rvm?",4756059398),new cljs.core.Keyword(null,"LT_USE_RVM","LT_USE_RVM",4685907820),new cljs.core.Keyword("lt.objs.langs.ruby.client","enable-client-logging?","lt.objs.langs.ruby.client/enable-client-logging?",2963145218),new cljs.core.Keyword(null,"LT_ENABLE_CLIENT_LOGGING","LT_ENABLE_CLIENT_LOGGING",1714721026)], null);var env = cljs.core.zipmap.call(null,cljs.core.map.call(null,keys__GT_env,cljs.core.keys.call(null,cljs.core.select_keys.call(null,cljs.core.deref.call(null,lt.objs.langs.ruby.ruby),cljs.core.keys.call(null,keys__GT_env)))),cljs.core.cycle.call(null,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [true], null)));var env__$1 = (cljs.core.truth_(new cljs.core.Keyword("lt.objs.langs.ruby.client","rvm-path","lt.objs.langs.ruby.client/rvm-path",2419157655).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,lt.objs.langs.ruby.ruby)))?cljs.core.assoc.call(null,env,new cljs.core.Keyword(null,"LT_RVM_PATH","LT_RVM_PATH",839899236),new cljs.core.Keyword("lt.objs.langs.ruby.client","rvm-path","lt.objs.langs.ruby.client/rvm-path",2419157655).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,lt.objs.langs.ruby.ruby))):env);var command = (cljs.core.truth_(use_runner)?"bash":(function (){var or__6755__auto__ = new cljs.core.Keyword("lt.objs.langs.ruby.client","ruby-exe","lt.objs.langs.ruby.client/ruby-exe",1352032473).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,lt.objs.langs.ruby.ruby));if(cljs.core.truth_(or__6755__auto__)) {return or__6755__auto__; } else {return "ruby"; } -})());var args = (cljs.core.truth_(use_runner)?new cljs.core.PersistentVector(null, 5, 5, cljs.core.PersistentVector.EMPTY_NODE, [lt.objs.langs.ruby.runner_path,project_path,lt.objs.langs.ruby.bash_escape_spaces.call(null,lt.objs.langs.ruby.rb_path),lt.objs.clients.tcp.port,lt.objs.clients.__GT_id.call(null,client)], null):new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [lt.objs.langs.ruby.escape_spaces.call(null,lt.objs.langs.ruby.rb_path),lt.objs.clients.tcp.port,lt.objs.clients.__GT_id.call(null,client)], null));return lt.objs.proc.exec.call(null,new cljs.core.PersistentArrayMap(null, 5, [new cljs.core.Keyword(null,"command","command",1964298941),command,new cljs.core.Keyword(null,"args","args",1016906831),args,new cljs.core.Keyword(null,"cwd","cwd",1014003170),project_path,new cljs.core.Keyword(null,"env","env",1014004831),env__$1,new cljs.core.Keyword(null,"obj","obj",1014014057),obj], null)); +})());var args = (cljs.core.truth_(use_runner)?new cljs.core.PersistentVector(null, 5, 5, cljs.core.PersistentVector.EMPTY_NODE, [lt.objs.langs.ruby.client.runner_path,project_path,lt.objs.langs.ruby.client.bash_escape_spaces.call(null,lt.objs.langs.ruby.client.rb_path),lt.objs.clients.tcp.port,lt.objs.clients.__GT_id.call(null,client)], null):new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [lt.objs.langs.ruby.client.escape_spaces.call(null,lt.objs.langs.ruby.client.rb_path),lt.objs.clients.tcp.port,lt.objs.clients.__GT_id.call(null,client)], null));return lt.objs.proc.exec.call(null,new cljs.core.PersistentArrayMap(null, 5, [new cljs.core.Keyword(null,"command","command",1964298941),command,new cljs.core.Keyword(null,"args","args",1016906831),args,new cljs.core.Keyword(null,"cwd","cwd",1014003170),project_path,new cljs.core.Keyword(null,"env","env",1014004831),env__$1,new cljs.core.Keyword(null,"obj","obj",1014014057),obj], null)); }); -lt.objs.langs.ruby.check_ruby = (function check_ruby(obj){return cljs.core.assoc.call(null,obj,new cljs.core.Keyword(null,"ruby","ruby",1017416012),(function (){var or__6755__auto__ = new cljs.core.Keyword("lt.objs.langs.ruby","ruby-exe","lt.objs.langs.ruby/ruby-exe",1735754269).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,lt.objs.langs.ruby.ruby));if(cljs.core.truth_(or__6755__auto__)) +lt.objs.langs.ruby.client.check_ruby = (function check_ruby(obj){return cljs.core.assoc.call(null,obj,new cljs.core.Keyword(null,"ruby","ruby",1017416012),(function (){var or__6755__auto__ = new cljs.core.Keyword("lt.objs.langs.ruby.client","ruby-exe","lt.objs.langs.ruby.client/ruby-exe",1352032473).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,lt.objs.langs.ruby.ruby));if(cljs.core.truth_(or__6755__auto__)) {return or__6755__auto__; } else -{return lt.objs.langs.ruby.shell.which("ruby"); +{return lt.objs.langs.ruby.client.shell.which("ruby"); } })()); }); -lt.objs.langs.ruby.check_client = (function check_client(obj){return cljs.core.assoc.call(null,obj,new cljs.core.Keyword(null,"ruby-client","ruby-client",4412625552),lt.objs.files.exists_QMARK_.call(null,lt.objs.langs.ruby.rb_path)); +lt.objs.langs.ruby.client.check_client = (function check_client(obj){return cljs.core.assoc.call(null,obj,new cljs.core.Keyword(null,"ruby-client","ruby-client",4412625552),lt.objs.files.exists_QMARK_.call(null,lt.objs.langs.ruby.client.rb_path)); }); -lt.objs.langs.ruby.find_project = (function find_project(obj){var p = new cljs.core.Keyword(null,"path","path",1017337751).cljs$core$IFn$_invoke$arity$1(obj);var roots = lt.objs.files.get_roots.call(null);var cur = p;var prev = "";while(true){ +lt.objs.langs.ruby.client.find_project = (function find_project(obj){var p = new cljs.core.Keyword(null,"path","path",1017337751).cljs$core$IFn$_invoke$arity$1(obj);var roots = lt.objs.files.get_roots.call(null);var cur = p;var prev = "";while(true){ if(cljs.core.truth_((function (){var or__6755__auto__ = cljs.core.empty_QMARK_.call(null,cur);if(or__6755__auto__) {return or__6755__auto__; } else @@ -131,10 +120,10 @@ if(cljs.core.truth_((function (){var or__6755__auto__ = cljs.core.empty_QMARK_.c {return cljs.core.assoc.call(null,obj,new cljs.core.Keyword(null,"project-path","project-path",1907176907),cur); } else {{ -var G__9235 = lt.objs.files.parent.call(null,cur); -var G__9236 = cur; -cur = G__9235; -prev = G__9236; +var G__8213 = lt.objs.files.parent.call(null,cur); +var G__8214 = cur; +cur = G__8213; +prev = G__8214; continue; } } @@ -142,49 +131,135 @@ continue; break; } }); -lt.objs.langs.ruby.notify = (function notify(obj){var map__9192 = obj;var map__9192__$1 = ((cljs.core.seq_QMARK_.call(null,map__9192))?cljs.core.apply.call(null,cljs.core.hash_map,map__9192):map__9192);var client = cljs.core.get.call(null,map__9192__$1,new cljs.core.Keyword(null,"client","client",3951159101));var ruby_client = cljs.core.get.call(null,map__9192__$1,new cljs.core.Keyword(null,"ruby-client","ruby-client",4412625552));var path = cljs.core.get.call(null,map__9192__$1,new cljs.core.Keyword(null,"path","path",1017337751));var project_path = cljs.core.get.call(null,map__9192__$1,new cljs.core.Keyword(null,"project-path","project-path",1907176907));var ruby = cljs.core.get.call(null,map__9192__$1,new cljs.core.Keyword(null,"ruby","ruby",1017416012));if((cljs.core.not.call(null,ruby)) || (cljs.core.empty_QMARK_.call(null,ruby))) +lt.objs.langs.ruby.client.notify = (function notify(obj){var map__8199 = obj;var map__8199__$1 = ((cljs.core.seq_QMARK_.call(null,map__8199))?cljs.core.apply.call(null,cljs.core.hash_map,map__8199):map__8199);var client = cljs.core.get.call(null,map__8199__$1,new cljs.core.Keyword(null,"client","client",3951159101));var ruby_client = cljs.core.get.call(null,map__8199__$1,new cljs.core.Keyword(null,"ruby-client","ruby-client",4412625552));var path = cljs.core.get.call(null,map__8199__$1,new cljs.core.Keyword(null,"path","path",1017337751));var project_path = cljs.core.get.call(null,map__8199__$1,new cljs.core.Keyword(null,"project-path","project-path",1907176907));var ruby = cljs.core.get.call(null,map__8199__$1,new cljs.core.Keyword(null,"ruby","ruby",1017416012));if((cljs.core.not.call(null,ruby)) || (cljs.core.empty_QMARK_.call(null,ruby))) {lt.objs.clients.rem_BANG_.call(null,client); lt.objs.notifos.done_working.call(null); -lt.objs.popup.popup_BANG_.call(null,new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"header","header",4087600639),"We couldn't find Ruby.",new cljs.core.Keyword(null,"body","body",1016933652),"In order to evaluate in Ruby files, a Ruby interpreter has to be installed and on your system PATH.",new cljs.core.Keyword(null,"buttons","buttons",1255256819),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"label","label",1116631654),"Download Ruby",new cljs.core.Keyword(null,"action","action",3885920680),(function (){return lt.objs.platform.open.call(null,"https://www.ruby-lang.org/en/downloads/"); +lt.objs.popup.popup_BANG_.call(null,new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"header","header",4087600639),"We couldn't find Ruby.",new cljs.core.Keyword(null,"body","body",1016933652),"In order to evaluate in Ruby files, a Ruby interpreter has to be installed and on your system PATH.",new cljs.core.Keyword(null,"buttons","buttons",1255256819),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"label","label",1116631654),"Download Ruby",new cljs.core.Keyword(null,"action","action",3885920680),(function (){return platform.open.call(null,"https://www.ruby-lang.org/en/downloads/"); })], null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"label","label",1116631654),"ok"], null)], null)], null)); } else {if(cljs.core.not.call(null,project_path)) {lt.objs.clients.rem_BANG_.call(null,client); lt.objs.notifos.done_working.call(null); lt.objs.popup.popup_BANG_.call(null,new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"header","header",4087600639),"We couldn't find this file.",new cljs.core.Keyword(null,"body","body",1016933652),"In order to evaluate in Ruby files, the file has to be on disk somewhere.",new cljs.core.Keyword(null,"buttons","buttons",1255256819),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"label","label",1116631654),"Save this file",new cljs.core.Keyword(null,"action","action",3885920680),(function (){lt.objs.command.exec_BANG_.call(null,new cljs.core.Keyword(null,"save","save",1017427183)); -return lt.objs.langs.ruby.try_connect.call(null,obj); +return lt.objs.langs.ruby.client.try_connect.call(null,obj); })], null),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"label","label",1116631654),"Cancel",new cljs.core.Keyword(null,"action","action",3885920680),(function (){return null; })], null)], null)], null)); } else {if(new cljs.core.Keyword(null,"else","else",1017020587)) -{lt.objs.langs.ruby.run_rb.call(null,obj); +{lt.objs.langs.ruby.client.run_rb.call(null,obj); } else {} } } return obj; }); -lt.objs.langs.ruby.check_all = (function check_all(obj){return lt.objs.langs.ruby.notify.call(null,lt.objs.langs.ruby.find_project.call(null,lt.objs.langs.ruby.check_client.call(null,lt.objs.langs.ruby.check_ruby.call(null,obj)))); +lt.objs.langs.ruby.client.__BEH__connect = (function __BEH__connect(this$,path){return lt.objs.langs.ruby.client.try_connect.call(null,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"info","info",1017141280),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"path","path",1017337751),path], null)], null)); }); -lt.objs.langs.ruby.try_connect = (function try_connect(p__9193){var map__9195 = p__9193;var map__9195__$1 = ((cljs.core.seq_QMARK_.call(null,map__9195))?cljs.core.apply.call(null,cljs.core.hash_map,map__9195):map__9195);var info = cljs.core.get.call(null,map__9195__$1,new cljs.core.Keyword(null,"info","info",1017141280));var path = new cljs.core.Keyword(null,"path","path",1017337751).cljs$core$IFn$_invoke$arity$1(info);var client = lt.objs.clients.client_BANG_.call(null,new cljs.core.Keyword(null,"ruby.client","ruby.client",1005161937));lt.objs.langs.ruby.check_all.call(null,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"path","path",1017337751),path,new cljs.core.Keyword(null,"client","client",3951159101),client], null)); +lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby.client","connect","lt.objs.langs.ruby.client/connect",1204846264),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.client.__BEH__connect,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"connect","connect",1965255772),null], null), null)); +lt.objs.langs.ruby.client.check_all = (function check_all(obj){return lt.objs.langs.ruby.client.notify.call(null,lt.objs.langs.ruby.client.find_project.call(null,lt.objs.langs.ruby.client.check_client.call(null,lt.objs.langs.ruby.client.check_ruby.call(null,obj)))); +}); +lt.objs.langs.ruby.client.try_connect = (function try_connect(p__8200){var map__8202 = p__8200;var map__8202__$1 = ((cljs.core.seq_QMARK_.call(null,map__8202))?cljs.core.apply.call(null,cljs.core.hash_map,map__8202):map__8202);var info = cljs.core.get.call(null,map__8202__$1,new cljs.core.Keyword(null,"info","info",1017141280));var path = new cljs.core.Keyword(null,"path","path",1017337751).cljs$core$IFn$_invoke$arity$1(info);var client = lt.objs.clients.client_BANG_.call(null,new cljs.core.Keyword(null,"ruby.client","ruby.client",1005161937));lt.objs.langs.ruby.client.check_all.call(null,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"path","path",1017337751),path,new cljs.core.Keyword(null,"client","client",3951159101),client], null)); return client; }); -lt.objs.langs.ruby.ruby_watch = (function ruby_watch(meta,src){var meta_str = [cljs.core.str("%q("),cljs.core.str(JSON.stringify(cljs.core.clj__GT_js.call(null,meta))),cljs.core.str(")")].join('');return [cljs.core.str("LtWatch.watch("),cljs.core.str(src),cljs.core.str(", JSON.parse("),cljs.core.str(meta_str),cljs.core.str("))")].join(''); +lt.objs.sidebar.clients.add_connector.call(null,new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"name","name",1017277949),"Ruby",new cljs.core.Keyword(null,"desc","desc",1016984067),"Select a directory to serve as the root of your ruby project.",new cljs.core.Keyword(null,"connect","connect",1965255772),(function (){return lt.objs.dialogs.dir.call(null,lt.objs.langs.ruby.ruby,new cljs.core.Keyword(null,"connect","connect",1965255772)); +})], null)); +} +if(!lt.util.load.provided_QMARK_('lt.objs.langs.ruby.eval')) { +goog.provide('lt.objs.langs.ruby.eval'); +goog.require('cljs.core'); +goog.require('lt.objs.langs.ruby'); +goog.require('lt.objs.langs.ruby.client'); +goog.require('lt.objs.files'); +goog.require('lt.objs.langs.ruby.client'); +goog.require('lt.objs.langs.ruby'); +goog.require('lt.objs.notifos'); +goog.require('lt.objs.notifos'); +goog.require('lt.objs.files'); +goog.require('lt.plugins.watches'); +goog.require('lt.objs.eval'); +goog.require('lt.objs.clients'); +goog.require('lt.objs.langs.ruby'); +goog.require('lt.plugins.watches'); +goog.require('lt.objs.editor'); +goog.require('lt.object'); +goog.require('lt.object'); +goog.require('lt.objs.console'); +goog.require('lt.objs.console'); +goog.require('lt.objs.eval'); +goog.require('lt.objs.clients'); +goog.require('lt.objs.editor'); +lt.objs.langs.ruby.eval.__BEH__on_eval = (function __BEH__on_eval(editor){return lt.object.raise.call(null,lt.objs.langs.ruby.ruby,new cljs.core.Keyword(null,"eval!","eval!",1110791799),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"origin","origin",4300251800),editor,new cljs.core.Keyword(null,"info","info",1017141280),cljs.core.assoc.call(null,cljs.core.deref.call(null,editor).call(null,new cljs.core.Keyword(null,"info","info",1017141280)),new cljs.core.Keyword(null,"code","code",1016963423),lt.plugins.watches.watched_range.call(null,editor,null,null,lt.objs.langs.ruby.watch.ruby_watch),new cljs.core.Keyword(null,"meta","meta",1017252215),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"start","start",1123661780),0,new cljs.core.Keyword(null,"end","end",1014004813),lt.objs.editor.last_line.call(null,editor)], null))], null)); +}); +lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby.eval","on-eval","lt.objs.langs.ruby.eval/on-eval",3465529563),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.eval.__BEH__on_eval,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"eval","eval",1017029646),null], null), null)); +lt.objs.langs.ruby.eval.__BEH__on_eval__DOT__one = (function __BEH__on_eval__DOT__one(editor){var pos = lt.objs.editor.__GT_cursor.call(null,editor);var code = (cljs.core.truth_(lt.objs.editor.selection_QMARK_.call(null,editor))?lt.plugins.watches.watched_range.call(null,editor,null,null,lt.objs.langs.ruby.watch.ruby_watch):lt.objs.editor.line.call(null,editor,new cljs.core.Keyword(null,"line","line",1017226086).cljs$core$IFn$_invoke$arity$1(pos)));var info = new cljs.core.Keyword(null,"info","info",1017141280).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,editor));var info__$1 = (cljs.core.truth_(lt.objs.editor.selection_QMARK_.call(null,editor))?cljs.core.assoc.call(null,info,new cljs.core.Keyword(null,"code","code",1016963423),lt.objs.editor.selection.call(null,editor),new cljs.core.Keyword(null,"meta","meta",1017252215),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"start","start",1123661780),new cljs.core.Keyword(null,"line","line",1017226086).cljs$core$IFn$_invoke$arity$1(lt.objs.editor.__GT_cursor.call(null,editor,"start")),new cljs.core.Keyword(null,"end","end",1014004813),new cljs.core.Keyword(null,"line","line",1017226086).cljs$core$IFn$_invoke$arity$1(lt.objs.editor.__GT_cursor.call(null,editor,"end"))], null)):cljs.core.assoc.call(null,info,new cljs.core.Keyword(null,"pos","pos",1014015430),pos,new cljs.core.Keyword(null,"code","code",1016963423),code,new cljs.core.Keyword(null,"meta","meta",1017252215),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"start","start",1123661780),new cljs.core.Keyword(null,"line","line",1017226086).cljs$core$IFn$_invoke$arity$1(pos),new cljs.core.Keyword(null,"end","end",1014004813),new cljs.core.Keyword(null,"line","line",1017226086).cljs$core$IFn$_invoke$arity$1(pos)], null)));return lt.object.raise.call(null,lt.objs.langs.ruby.ruby,new cljs.core.Keyword(null,"eval!","eval!",1110791799),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"origin","origin",4300251800),editor,new cljs.core.Keyword(null,"info","info",1017141280),info__$1], null)); +}); +lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby.eval","on-eval.one","lt.objs.langs.ruby.eval/on-eval.one",3229705315),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.eval.__BEH__on_eval__DOT__one,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"eval.one","eval.one",1173589382),null], null), null)); +lt.objs.langs.ruby.eval.__BEH__eval_BANG_ = (function __BEH__eval_BANG_(this$,event){var map__8226 = event;var map__8226__$1 = ((cljs.core.seq_QMARK_.call(null,map__8226))?cljs.core.apply.call(null,cljs.core.hash_map,map__8226):map__8226);var origin = cljs.core.get.call(null,map__8226__$1,new cljs.core.Keyword(null,"origin","origin",4300251800));var info = cljs.core.get.call(null,map__8226__$1,new cljs.core.Keyword(null,"info","info",1017141280));var client = new cljs.core.Keyword(null,"default","default",2558708147).cljs$core$IFn$_invoke$arity$1(new cljs.core.Keyword(null,"client","client",3951159101).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,origin)));lt.objs.notifos.working.call(null,""); +return lt.objs.clients.send.call(null,lt.objs.eval.get_client_BANG_.call(null,new cljs.core.PersistentArrayMap(null, 4, [new cljs.core.Keyword(null,"command","command",1964298941),new cljs.core.Keyword(null,"editor.eval.ruby","editor.eval.ruby",3156763677),new cljs.core.Keyword(null,"origin","origin",4300251800),origin,new cljs.core.Keyword(null,"info","info",1017141280),info,new cljs.core.Keyword(null,"create","create",3956577390),lt.objs.langs.ruby.client.try_connect], null)),new cljs.core.Keyword(null,"editor.eval.ruby","editor.eval.ruby",3156763677),info,new cljs.core.Keyword(null,"only","only",1017320222),origin); +}); +lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby.eval","eval!","lt.objs.langs.ruby.eval/eval!",771984808),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.eval.__BEH__eval_BANG_,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"eval!","eval!",1110791799),null], null), null)); +lt.objs.langs.ruby.eval.__BEH__ruby_result = (function __BEH__ruby_result(editor,res){lt.objs.notifos.done_working.call(null); +return lt.object.raise.call(null,editor,new cljs.core.Keyword(null,"editor.result","editor.result",4030217008),new cljs.core.Keyword(null,"result","result",4374444943).cljs$core$IFn$_invoke$arity$1(res),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"line","line",1017226086),new cljs.core.Keyword(null,"end","end",1014004813).cljs$core$IFn$_invoke$arity$1(new cljs.core.Keyword(null,"meta","meta",1017252215).cljs$core$IFn$_invoke$arity$1(res)),new cljs.core.Keyword(null,"start-line","start-line",3689311729),new cljs.core.Keyword(null,"start","start",1123661780).cljs$core$IFn$_invoke$arity$1(new cljs.core.Keyword(null,"meta","meta",1017252215).cljs$core$IFn$_invoke$arity$1(res))], null)); +}); +lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby.eval","ruby-result","lt.objs.langs.ruby.eval/ruby-result",2348571901),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.eval.__BEH__ruby_result,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"editor.eval.ruby.result","editor.eval.ruby.result",2068638258),null], null), null)); +lt.objs.langs.ruby.eval.__BEH__ruby_success = (function __BEH__ruby_success(editor,res){lt.objs.notifos.done_working.call(null); +return lt.object.raise.call(null,editor,new cljs.core.Keyword(null,"editor.result","editor.result",4030217008),"\u2713",new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"line","line",1017226086),new cljs.core.Keyword(null,"end","end",1014004813).cljs$core$IFn$_invoke$arity$1(new cljs.core.Keyword(null,"meta","meta",1017252215).cljs$core$IFn$_invoke$arity$1(res)),new cljs.core.Keyword(null,"start-line","start-line",3689311729),new cljs.core.Keyword(null,"start","start",1123661780).cljs$core$IFn$_invoke$arity$1(new cljs.core.Keyword(null,"meta","meta",1017252215).cljs$core$IFn$_invoke$arity$1(res))], null)); +}); +lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby.eval","ruby-success","lt.objs.langs.ruby.eval/ruby-success",2376233373),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.eval.__BEH__ruby_success,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"editor.eval.ruby.success","editor.eval.ruby.success",681171250),null], null), null)); +lt.objs.langs.ruby.eval.__BEH__ruby_incomplete = (function __BEH__ruby_incomplete(editor,res){lt.objs.notifos.done_working.call(null); +return lt.object.raise.call(null,editor,new cljs.core.Keyword(null,"editor.result","editor.result",4030217008),"\u2026",new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"line","line",1017226086),new cljs.core.Keyword(null,"end","end",1014004813).cljs$core$IFn$_invoke$arity$1(new cljs.core.Keyword(null,"meta","meta",1017252215).cljs$core$IFn$_invoke$arity$1(res)),new cljs.core.Keyword(null,"start-line","start-line",3689311729),new cljs.core.Keyword(null,"start","start",1123661780).cljs$core$IFn$_invoke$arity$1(new cljs.core.Keyword(null,"meta","meta",1017252215).cljs$core$IFn$_invoke$arity$1(res))], null)); +}); +lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby.eval","ruby-incomplete","lt.objs.langs.ruby.eval/ruby-incomplete",1066597748),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.eval.__BEH__ruby_incomplete,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"editor.eval.ruby.incomplete","editor.eval.ruby.incomplete",1073570291),null], null), null)); +lt.objs.langs.ruby.eval.__BEH__ruby_exception = (function __BEH__ruby_exception(editor,ex){lt.objs.notifos.done_working.call(null); +return lt.object.raise.call(null,editor,new cljs.core.Keyword(null,"editor.exception","editor.exception",3983021184),new cljs.core.Keyword(null,"ex","ex",1013907493).cljs$core$IFn$_invoke$arity$1(ex),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"line","line",1017226086),new cljs.core.Keyword(null,"end","end",1014004813).cljs$core$IFn$_invoke$arity$1(new cljs.core.Keyword(null,"meta","meta",1017252215).cljs$core$IFn$_invoke$arity$1(ex)),new cljs.core.Keyword(null,"start-line","start-line",3689311729),new cljs.core.Keyword(null,"start","start",1123661780).cljs$core$IFn$_invoke$arity$1(new cljs.core.Keyword(null,"meta","meta",1017252215).cljs$core$IFn$_invoke$arity$1(ex))], null)); +}); +lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby.eval","ruby-exception","lt.objs.langs.ruby.eval/ruby-exception",1372941897),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.eval.__BEH__ruby_exception,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"editor.eval.ruby.exception","editor.eval.ruby.exception",3915509310),null], null), null)); +lt.objs.langs.ruby.eval.__BEH__ruby_printer = (function __BEH__ruby_printer(editor,p){return lt.objs.console.loc_log.call(null,new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"file","file",1017047278),lt.objs.files.basename.call(null,new cljs.core.Keyword(null,"file","file",1017047278).cljs$core$IFn$_invoke$arity$1(p)),new cljs.core.Keyword(null,"line","line",1017226086),"stdout",new cljs.core.Keyword(null,"content","content",1965434859),new cljs.core.Keyword(null,"msg","msg",1014012659).cljs$core$IFn$_invoke$arity$1(p)], null)); +}); +lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby.eval","ruby-printer","lt.objs.langs.ruby.eval/ruby-printer",3793418566),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.eval.__BEH__ruby_printer,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"editor.eval.ruby.print","editor.eval.ruby.print",2986120988),null], null), null)); +} +if(!lt.util.load.provided_QMARK_('lt.objs.langs.ruby.config')) { +goog.provide('lt.objs.langs.ruby.config'); +goog.require('cljs.core'); +goog.require('lt.objs.langs.ruby'); +goog.require('lt.objs.langs.ruby'); +goog.require('lt.objs.langs.ruby'); +goog.require('lt.object'); +goog.require('lt.object'); +lt.objs.langs.ruby.config.__BEH__ruby_exe = (function __BEH__ruby_exe(this$,exe){return lt.object.merge_BANG_.call(null,lt.objs.langs.ruby.ruby,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("lt.objs.langs.ruby.client","ruby-exe","lt.objs.langs.ruby.client/ruby-exe",1352032473),exe], null)); +}); +lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","ruby-exe","lt.objs.langs.ruby/ruby-exe",1735754269),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.config.__BEH__ruby_exe,new cljs.core.Keyword(null,"desc","desc",1016984067),"Ruby: Set the path to the ruby executable for clients",new cljs.core.Keyword(null,"params","params",4313443576),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"label","label",1116631654),"path",new cljs.core.Keyword(null,"type","type",1017479852),new cljs.core.Keyword(null,"path","path",1017337751)], null)], null),new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"object.instant","object.instant",773332388),null], null), null),new cljs.core.Keyword(null,"type","type",1017479852),new cljs.core.Keyword(null,"user","user",1017503549),new cljs.core.Keyword(null,"exclusive","exclusive",2700522000),true); +lt.objs.langs.ruby.config.__BEH__use_rvm = (function __BEH__use_rvm(this$){return lt.object.merge_BANG_.call(null,lt.objs.langs.ruby.ruby,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("lt.objs.langs.ruby.client","use-rvm?","lt.objs.langs.ruby.client/use-rvm?",4756059398),true], null)); }); -lt.objs.langs.ruby.__BEH__watch_src = (function __BEH__watch_src(editor,cur,meta,src){return lt.objs.langs.ruby.ruby_watch.call(null,meta,src); +lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","use-rvm","lt.objs.langs.ruby/use-rvm",3201581913),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.config.__BEH__use_rvm,new cljs.core.Keyword(null,"desc","desc",1016984067),"Ruby: Use RVM when loading REPL",new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"object.instant","object.instant",773332388),null], null), null),new cljs.core.Keyword(null,"type","type",1017479852),new cljs.core.Keyword(null,"user","user",1017503549),new cljs.core.Keyword(null,"exclusive","exclusive",2700522000),true); +lt.objs.langs.ruby.config.__BEH__rvm_path = (function __BEH__rvm_path(this$,path){return lt.object.merge_BANG_.call(null,lt.objs.langs.ruby.ruby,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("lt.objs.langs.ruby.client","rvm-path","lt.objs.langs.ruby.client/rvm-path",2419157655),path], null)); }); -lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","watch-src","lt.objs.langs.ruby/watch-src",3610026486),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.__BEH__watch_src,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"watch.src+","watch.src+",868749304),null], null), null)); -lt.objs.langs.ruby.__BEH__on_eval = (function __BEH__on_eval(editor){return lt.object.raise.call(null,lt.objs.langs.ruby.ruby,new cljs.core.Keyword(null,"eval!","eval!",1110791799),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"origin","origin",4300251800),editor,new cljs.core.Keyword(null,"info","info",1017141280),cljs.core.assoc.call(null,cljs.core.deref.call(null,editor).call(null,new cljs.core.Keyword(null,"info","info",1017141280)),new cljs.core.Keyword(null,"code","code",1016963423),lt.plugins.watches.watched_range.call(null,editor,null,null,lt.objs.langs.ruby.ruby_watch),new cljs.core.Keyword(null,"meta","meta",1017252215),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"start","start",1123661780),0,new cljs.core.Keyword(null,"end","end",1014004813),lt.objs.editor.last_line.call(null,editor)], null))], null)); +lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","rvm-path","lt.objs.langs.ruby/rvm-path",1422692051),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.config.__BEH__rvm_path,new cljs.core.Keyword(null,"desc","desc",1016984067),"Ruby: Path to RVM init script",new cljs.core.Keyword(null,"params","params",4313443576),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"label","label",1116631654),"path",new cljs.core.Keyword(null,"type","type",1017479852),new cljs.core.Keyword(null,"path","path",1017337751)], null)], null),new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"object.instant","object.instant",773332388),null], null), null),new cljs.core.Keyword(null,"type","type",1017479852),new cljs.core.Keyword(null,"user","user",1017503549),new cljs.core.Keyword(null,"exclusive","exclusive",2700522000),true); +lt.objs.langs.ruby.config.__BEH__use_rbenv = (function __BEH__use_rbenv(this$){return lt.object.merge_BANG_.call(null,lt.objs.langs.ruby.ruby,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("lt.objs.langs.ruby.client","use-rbenv?","lt.objs.langs.ruby.client/use-rbenv?",1607909234),true], null)); }); -lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","on-eval","lt.objs.langs.ruby/on-eval",4700701138),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.__BEH__on_eval,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"eval","eval",1017029646),null], null), null)); -lt.objs.langs.ruby.__BEH__on_eval__DOT__one = (function __BEH__on_eval__DOT__one(editor){var pos = lt.objs.editor.__GT_cursor.call(null,editor);var code = (cljs.core.truth_(lt.objs.editor.selection_QMARK_.call(null,editor))?lt.plugins.watches.watched_range.call(null,editor,null,null,lt.objs.langs.ruby.ruby_watch):lt.objs.editor.line.call(null,editor,new cljs.core.Keyword(null,"line","line",1017226086).cljs$core$IFn$_invoke$arity$1(pos)));var info = new cljs.core.Keyword(null,"info","info",1017141280).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,editor));var info__$1 = (cljs.core.truth_(lt.objs.editor.selection_QMARK_.call(null,editor))?cljs.core.assoc.call(null,info,new cljs.core.Keyword(null,"code","code",1016963423),lt.objs.editor.selection.call(null,editor),new cljs.core.Keyword(null,"meta","meta",1017252215),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"start","start",1123661780),new cljs.core.Keyword(null,"line","line",1017226086).cljs$core$IFn$_invoke$arity$1(lt.objs.editor.__GT_cursor.call(null,editor,"start")),new cljs.core.Keyword(null,"end","end",1014004813),new cljs.core.Keyword(null,"line","line",1017226086).cljs$core$IFn$_invoke$arity$1(lt.objs.editor.__GT_cursor.call(null,editor,"end"))], null)):cljs.core.assoc.call(null,info,new cljs.core.Keyword(null,"pos","pos",1014015430),pos,new cljs.core.Keyword(null,"code","code",1016963423),code,new cljs.core.Keyword(null,"meta","meta",1017252215),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"start","start",1123661780),new cljs.core.Keyword(null,"line","line",1017226086).cljs$core$IFn$_invoke$arity$1(pos),new cljs.core.Keyword(null,"end","end",1014004813),new cljs.core.Keyword(null,"line","line",1017226086).cljs$core$IFn$_invoke$arity$1(pos)], null)));return lt.object.raise.call(null,lt.objs.langs.ruby.ruby,new cljs.core.Keyword(null,"eval!","eval!",1110791799),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"origin","origin",4300251800),editor,new cljs.core.Keyword(null,"info","info",1017141280),info__$1], null)); +lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","use-rbenv","lt.objs.langs.ruby/use-rbenv",4653496197),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.config.__BEH__use_rbenv,new cljs.core.Keyword(null,"desc","desc",1016984067),"Ruby: Use rbenv when loading REPL",new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"object.instant","object.instant",773332388),null], null), null),new cljs.core.Keyword(null,"type","type",1017479852),new cljs.core.Keyword(null,"user","user",1017503549),new cljs.core.Keyword(null,"exclusive","exclusive",2700522000),true); +lt.objs.langs.ruby.config.__BEH__client_enable_logging = (function __BEH__client_enable_logging(this$){return lt.object.merge_BANG_.call(null,lt.objs.langs.ruby.ruby,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("lt.objs.langs.ruby.client","enable-client-logging?","lt.objs.langs.ruby.client/enable-client-logging?",2963145218),true], null)); }); -lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","on-eval.one","lt.objs.langs.ruby/on-eval.one",4665959482),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.__BEH__on_eval__DOT__one,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"eval.one","eval.one",1173589382),null], null), null)); -lt.objs.langs.ruby.__BEH__eval_on_change = (function __BEH__eval_on_change(editor,_cm,delta){var doc = lt.objs.editor.get_doc.call(null,editor);var new_lc = lt.objs.editor.last_line.call(null,editor);var last_line = lt.objs.editor.line.call(null,editor,new_lc);var old_lc = (function (){var or__6755__auto__ = new cljs.core.Keyword("lt.objs.langs.ruby","line-count","lt.objs.langs.ruby/line-count",4342272134).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,editor));if(cljs.core.truth_(or__6755__auto__)) +lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","client-enable-logging","lt.objs.langs.ruby/client-enable-logging",3821188453),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.config.__BEH__client_enable_logging,new cljs.core.Keyword(null,"desc","desc",1016984067),"Ruby: log ruby client output to lt_client.log",new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"object.instant","object.instant",773332388),null], null), null),new cljs.core.Keyword(null,"type","type",1017479852),new cljs.core.Keyword(null,"user","user",1017503549),new cljs.core.Keyword(null,"exclusive","exclusive",2700522000),true); +} +if(!lt.util.load.provided_QMARK_('lt.objs.langs.ruby.live')) { +goog.provide('lt.objs.langs.ruby.live'); +goog.require('cljs.core'); +goog.require('lt.util.dom'); +goog.require('lt.util.dom'); +goog.require('lt.objs.command'); +goog.require('lt.objs.eval'); +goog.require('lt.objs.editor'); +goog.require('lt.object'); +goog.require('lt.object'); +goog.require('lt.objs.eval'); +goog.require('lt.objs.command'); +goog.require('lt.objs.editor'); +lt.objs.langs.ruby.live.__BEH__eval_on_change = (function __BEH__eval_on_change(editor,_cm,delta){var doc = lt.objs.editor.get_doc.call(null,editor);var new_lc = lt.objs.editor.last_line.call(null,editor);var last_line = lt.objs.editor.line.call(null,editor,new_lc);var old_lc = (function (){var or__6755__auto__ = new cljs.core.Keyword("lt.objs.langs.ruby.live","line-count","lt.objs.langs.ruby.live/line-count",3694152907).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,editor));if(cljs.core.truth_(or__6755__auto__)) {return or__6755__auto__; } else -{lt.object.merge_BANG_.call(null,editor,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("lt.objs.langs.ruby","line-count","lt.objs.langs.ruby/line-count",4342272134),0], null)); -return new cljs.core.Keyword("lt.objs.langs.ruby","line-count","lt.objs.langs.ruby/line-count",4342272134).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,editor)); +{lt.object.merge_BANG_.call(null,editor,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("lt.objs.langs.ruby.live","line-count","lt.objs.langs.ruby.live/line-count",3694152907),0], null)); +return new cljs.core.Keyword("lt.objs.langs.ruby.live","line-count","lt.objs.langs.ruby.live/line-count",3694152907).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,editor)); } })();if(cljs.core.truth_((function (){var and__6743__auto__ = /^\s*$/.test(last_line);if(cljs.core.truth_(and__6743__auto__)) {return cljs.core._EQ_.call(null,1,(new_lc - old_lc)); @@ -192,77 +267,57 @@ return new cljs.core.Keyword("lt.objs.langs.ruby","line-count","lt.objs.langs.ru {return and__6743__auto__; } })())) -{var code_9237 = lt.objs.editor.line.call(null,editor,(new_lc - 1));var line_9238 = (new_lc - 1);var info_9239 = cljs.core.assoc.call(null,cljs.core.assoc.call(null,new cljs.core.Keyword(null,"info","info",1017141280).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,editor)),new cljs.core.Keyword(null,"code","code",1016963423),code_9237),new cljs.core.Keyword(null,"meta","meta",1017252215),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"start","start",1123661780),line_9238,new cljs.core.Keyword(null,"end","end",1014004813),line_9238], null));if((!(cljs.core.empty_QMARK_.call(null,code_9237))) && (cljs.core.not.call(null,/^\s*$/.test(code_9237)))) -{lt.object.raise.call(null,lt.objs.langs.ruby.ruby,new cljs.core.Keyword(null,"eval!","eval!",1110791799),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"origin","origin",4300251800),editor,new cljs.core.Keyword(null,"info","info",1017141280),info_9239], null)); +{var code_8344 = lt.objs.editor.line.call(null,editor,(new_lc - 1));var line_8345 = (new_lc - 1);var info_8346 = cljs.core.assoc.call(null,cljs.core.assoc.call(null,new cljs.core.Keyword(null,"info","info",1017141280).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,editor)),new cljs.core.Keyword(null,"code","code",1016963423),code_8344),new cljs.core.Keyword(null,"meta","meta",1017252215),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"start","start",1123661780),line_8345,new cljs.core.Keyword(null,"end","end",1014004813),line_8345], null));if((!(cljs.core.empty_QMARK_.call(null,code_8344))) && (cljs.core.not.call(null,/^\s*$/.test(code_8344)))) +{lt.object.raise.call(null,lt.objs.langs.ruby.live.ruby,new cljs.core.Keyword(null,"eval!","eval!",1110791799),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"origin","origin",4300251800),editor,new cljs.core.Keyword(null,"info","info",1017141280),info_8346], null)); } else {} } else {} -return lt.object.merge_BANG_.call(null,editor,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("lt.objs.langs.ruby","line-count","lt.objs.langs.ruby/line-count",4342272134),new_lc], null)); -}); -lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","eval-on-change","lt.objs.langs.ruby/eval-on-change",4665325935),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.__BEH__eval_on_change,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"change","change",3947235106),null], null), null),new cljs.core.Keyword(null,"debounce","debounce",1556599227),300); -lt.objs.langs.ruby.__BEH__ruby_watch = (function __BEH__ruby_watch(editor,res){var temp__4092__auto__ = cljs.core.get.call(null,new cljs.core.Keyword(null,"watches","watches",2139868463).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,editor)),new cljs.core.Keyword(null,"id","id",1013907597).cljs$core$IFn$_invoke$arity$1(new cljs.core.Keyword(null,"meta","meta",1017252215).cljs$core$IFn$_invoke$arity$1(res)));if(cljs.core.truth_(temp__4092__auto__)) -{var watch = temp__4092__auto__;var str_result = new cljs.core.Keyword(null,"result","result",4374444943).cljs$core$IFn$_invoke$arity$1(res);return lt.object.raise.call(null,new cljs.core.Keyword(null,"inline-result","inline-result",656479555).cljs$core$IFn$_invoke$arity$1(watch),new cljs.core.Keyword(null,"update!","update!",779473898),str_result); -} else -{return null; -} -}); -lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","ruby-watch","lt.objs.langs.ruby/ruby-watch",4569791904),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.__BEH__ruby_watch,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"editor.eval.ruby.watch","editor.eval.ruby.watch",2992089406),null], null), null)); -lt.objs.langs.ruby.__BEH__ruby_result = (function __BEH__ruby_result(editor,res){lt.objs.notifos.done_working.call(null); -return lt.object.raise.call(null,editor,new cljs.core.Keyword(null,"editor.result","editor.result",4030217008),new cljs.core.Keyword(null,"result","result",4374444943).cljs$core$IFn$_invoke$arity$1(res),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"line","line",1017226086),new cljs.core.Keyword(null,"end","end",1014004813).cljs$core$IFn$_invoke$arity$1(new cljs.core.Keyword(null,"meta","meta",1017252215).cljs$core$IFn$_invoke$arity$1(res)),new cljs.core.Keyword(null,"start-line","start-line",3689311729),new cljs.core.Keyword(null,"start","start",1123661780).cljs$core$IFn$_invoke$arity$1(new cljs.core.Keyword(null,"meta","meta",1017252215).cljs$core$IFn$_invoke$arity$1(res))], null)); +return lt.object.merge_BANG_.call(null,editor,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("lt.objs.langs.ruby.live","line-count","lt.objs.langs.ruby.live/line-count",3694152907),new_lc], null)); }); -lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","ruby-result","lt.objs.langs.ruby/ruby-result",3515346284),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.__BEH__ruby_result,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"editor.eval.ruby.result","editor.eval.ruby.result",2068638258),null], null), null)); -lt.objs.langs.ruby.__BEH__ruby_success = (function __BEH__ruby_success(editor,res){lt.objs.notifos.done_working.call(null); -return lt.object.raise.call(null,editor,new cljs.core.Keyword(null,"editor.result","editor.result",4030217008),"\u2713",new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"line","line",1017226086),new cljs.core.Keyword(null,"end","end",1014004813).cljs$core$IFn$_invoke$arity$1(new cljs.core.Keyword(null,"meta","meta",1017252215).cljs$core$IFn$_invoke$arity$1(res)),new cljs.core.Keyword(null,"start-line","start-line",3689311729),new cljs.core.Keyword(null,"start","start",1123661780).cljs$core$IFn$_invoke$arity$1(new cljs.core.Keyword(null,"meta","meta",1017252215).cljs$core$IFn$_invoke$arity$1(res))], null)); -}); -lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","ruby-success","lt.objs.langs.ruby/ruby-success",3506299276),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.__BEH__ruby_success,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"editor.eval.ruby.success","editor.eval.ruby.success",681171250),null], null), null)); -lt.objs.langs.ruby.__BEH__ruby_incomplete = (function __BEH__ruby_incomplete(editor,res){lt.objs.notifos.done_working.call(null); -return lt.object.raise.call(null,editor,new cljs.core.Keyword(null,"editor.result","editor.result",4030217008),"\u2026",new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"line","line",1017226086),new cljs.core.Keyword(null,"end","end",1014004813).cljs$core$IFn$_invoke$arity$1(new cljs.core.Keyword(null,"meta","meta",1017252215).cljs$core$IFn$_invoke$arity$1(res)),new cljs.core.Keyword(null,"start-line","start-line",3689311729),new cljs.core.Keyword(null,"start","start",1123661780).cljs$core$IFn$_invoke$arity$1(new cljs.core.Keyword(null,"meta","meta",1017252215).cljs$core$IFn$_invoke$arity$1(res))], null)); -}); -lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","ruby-incomplete","lt.objs.langs.ruby/ruby-incomplete",1731087787),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.__BEH__ruby_incomplete,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"editor.eval.ruby.incomplete","editor.eval.ruby.incomplete",1073570291),null], null), null)); -lt.objs.langs.ruby.__BEH__ruby_exception = (function __BEH__ruby_exception(editor,ex){lt.objs.notifos.done_working.call(null); -return lt.object.raise.call(null,editor,new cljs.core.Keyword(null,"editor.exception","editor.exception",3983021184),new cljs.core.Keyword(null,"ex","ex",1013907493).cljs$core$IFn$_invoke$arity$1(ex),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"line","line",1017226086),new cljs.core.Keyword(null,"end","end",1014004813).cljs$core$IFn$_invoke$arity$1(new cljs.core.Keyword(null,"meta","meta",1017252215).cljs$core$IFn$_invoke$arity$1(ex)),new cljs.core.Keyword(null,"start-line","start-line",3689311729),new cljs.core.Keyword(null,"start","start",1123661780).cljs$core$IFn$_invoke$arity$1(new cljs.core.Keyword(null,"meta","meta",1017252215).cljs$core$IFn$_invoke$arity$1(ex))], null)); -}); -lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","ruby-exception","lt.objs.langs.ruby/ruby-exception",2213599904),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.__BEH__ruby_exception,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"editor.eval.ruby.exception","editor.eval.ruby.exception",3915509310),null], null), null)); -lt.objs.langs.ruby.image = (function image(src){var e__8111__auto__ = crate.core.html.call(null,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"img","img",1014008629),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"src","src",1014018390),[cljs.core.str("data:image/png;base64,"),cljs.core.str(src)].join('')], null)], null));var seq__9202_9240 = cljs.core.seq.call(null,cljs.core.partition.call(null,2,cljs.core.PersistentVector.EMPTY));var chunk__9203_9241 = null;var count__9204_9242 = 0;var i__9205_9243 = 0;while(true){ -if((i__9205_9243 < count__9204_9242)) -{var vec__9206_9244 = cljs.core._nth.call(null,chunk__9203_9241,i__9205_9243);var ev__8112__auto___9245 = cljs.core.nth.call(null,vec__9206_9244,0,null);var func__8113__auto___9246 = cljs.core.nth.call(null,vec__9206_9244,1,null);lt.util.dom.on.call(null,e__8111__auto__,ev__8112__auto___9245,func__8113__auto___9246); +lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby.live","eval-on-change","lt.objs.langs.ruby.live/eval-on-change",3237176404),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.live.__BEH__eval_on_change,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"change","change",3947235106),null], null), null),new cljs.core.Keyword(null,"debounce","debounce",1556599227),300); +lt.objs.langs.ruby.live.live_toggler = (function live_toggler(this$){var e__8111__auto__ = crate.core.html.call(null,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"div#instarepl","div#instarepl",2561476298),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"span","span",1017440956),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"class","class",1108647146),lt.objs.langs.ruby.live.bound.call(null,this$,(function (p1__8321_SHARP_){return [cljs.core.str("livetoggler "),cljs.core.str((cljs.core.truth_(new cljs.core.Keyword(null,"live","live",1017226334).cljs$core$IFn$_invoke$arity$1(p1__8321_SHARP_))?null:"off"))].join(''); +}))], null),"live"], null)], null));var seq__8328_8347 = cljs.core.seq.call(null,cljs.core.partition.call(null,2,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"click","click",1108654330),(function (e){lt.util.dom.prevent.call(null,e); +return lt.object.raise.call(null,new cljs.core.Keyword(null,"editor","editor",4001043679).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,this$)),new cljs.core.Keyword(null,"live.toggle!","live.toggle!",4497782717)); +})], null)));var chunk__8329_8348 = null;var count__8330_8349 = 0;var i__8331_8350 = 0;while(true){ +if((i__8331_8350 < count__8330_8349)) +{var vec__8332_8351 = cljs.core._nth.call(null,chunk__8329_8348,i__8331_8350);var ev__8112__auto___8352 = cljs.core.nth.call(null,vec__8332_8351,0,null);var func__8113__auto___8353 = cljs.core.nth.call(null,vec__8332_8351,1,null);lt.util.dom.on.call(null,e__8111__auto__,ev__8112__auto___8352,func__8113__auto___8353); { -var G__9247 = seq__9202_9240; -var G__9248 = chunk__9203_9241; -var G__9249 = count__9204_9242; -var G__9250 = (i__9205_9243 + 1); -seq__9202_9240 = G__9247; -chunk__9203_9241 = G__9248; -count__9204_9242 = G__9249; -i__9205_9243 = G__9250; +var G__8354 = seq__8328_8347; +var G__8355 = chunk__8329_8348; +var G__8356 = count__8330_8349; +var G__8357 = (i__8331_8350 + 1); +seq__8328_8347 = G__8354; +chunk__8329_8348 = G__8355; +count__8330_8349 = G__8356; +i__8331_8350 = G__8357; continue; } } else -{var temp__4092__auto___9251 = cljs.core.seq.call(null,seq__9202_9240);if(temp__4092__auto___9251) -{var seq__9202_9252__$1 = temp__4092__auto___9251;if(cljs.core.chunked_seq_QMARK_.call(null,seq__9202_9252__$1)) -{var c__7497__auto___9253 = cljs.core.chunk_first.call(null,seq__9202_9252__$1);{ -var G__9254 = cljs.core.chunk_rest.call(null,seq__9202_9252__$1); -var G__9255 = c__7497__auto___9253; -var G__9256 = cljs.core.count.call(null,c__7497__auto___9253); -var G__9257 = 0; -seq__9202_9240 = G__9254; -chunk__9203_9241 = G__9255; -count__9204_9242 = G__9256; -i__9205_9243 = G__9257; +{var temp__4092__auto___8358 = cljs.core.seq.call(null,seq__8328_8347);if(temp__4092__auto___8358) +{var seq__8328_8359__$1 = temp__4092__auto___8358;if(cljs.core.chunked_seq_QMARK_.call(null,seq__8328_8359__$1)) +{var c__7497__auto___8360 = cljs.core.chunk_first.call(null,seq__8328_8359__$1);{ +var G__8361 = cljs.core.chunk_rest.call(null,seq__8328_8359__$1); +var G__8362 = c__7497__auto___8360; +var G__8363 = cljs.core.count.call(null,c__7497__auto___8360); +var G__8364 = 0; +seq__8328_8347 = G__8361; +chunk__8329_8348 = G__8362; +count__8330_8349 = G__8363; +i__8331_8350 = G__8364; continue; } } else -{var vec__9207_9258 = cljs.core.first.call(null,seq__9202_9252__$1);var ev__8112__auto___9259 = cljs.core.nth.call(null,vec__9207_9258,0,null);var func__8113__auto___9260 = cljs.core.nth.call(null,vec__9207_9258,1,null);lt.util.dom.on.call(null,e__8111__auto__,ev__8112__auto___9259,func__8113__auto___9260); +{var vec__8333_8365 = cljs.core.first.call(null,seq__8328_8359__$1);var ev__8112__auto___8366 = cljs.core.nth.call(null,vec__8333_8365,0,null);var func__8113__auto___8367 = cljs.core.nth.call(null,vec__8333_8365,1,null);lt.util.dom.on.call(null,e__8111__auto__,ev__8112__auto___8366,func__8113__auto___8367); { -var G__9261 = cljs.core.next.call(null,seq__9202_9252__$1); -var G__9262 = null; -var G__9263 = 0; -var G__9264 = 0; -seq__9202_9240 = G__9261; -chunk__9203_9241 = G__9262; -count__9204_9242 = G__9263; -i__9205_9243 = G__9264; +var G__8368 = cljs.core.next.call(null,seq__8328_8359__$1); +var G__8369 = null; +var G__8370 = 0; +var G__8371 = 0; +seq__8328_8347 = G__8368; +chunk__8329_8348 = G__8369; +count__8330_8349 = G__8370; +i__8331_8350 = G__8371; continue; } } @@ -273,45 +328,100 @@ break; } return e__8111__auto__; }); -lt.objs.langs.ruby.canvas = (function canvas(){var e__8111__auto__ = crate.core.html.call(null,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"canvas","canvas",3941165258)], null));var seq__9214_9265 = cljs.core.seq.call(null,cljs.core.partition.call(null,2,cljs.core.PersistentVector.EMPTY));var chunk__9215_9266 = null;var count__9216_9267 = 0;var i__9217_9268 = 0;while(true){ -if((i__9217_9268 < count__9216_9267)) -{var vec__9218_9269 = cljs.core._nth.call(null,chunk__9215_9266,i__9217_9268);var ev__8112__auto___9270 = cljs.core.nth.call(null,vec__9218_9269,0,null);var func__8113__auto___9271 = cljs.core.nth.call(null,vec__9218_9269,1,null);lt.util.dom.on.call(null,e__8111__auto__,ev__8112__auto___9270,func__8113__auto___9271); +lt.object.object_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby.live","live-toggler","lt.objs.langs.ruby.live/live-toggler",4433482468),new cljs.core.Keyword(null,"tags","tags",1017456523),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("lt.objs.langs.ruby.live","live-toggler","lt.objs.langs.ruby.live/live-toggler",4433482468),null], null), null),new cljs.core.Keyword(null,"name","name",1017277949),"Live Mode Toggler",new cljs.core.Keyword(null,"live","live",1017226334),true,new cljs.core.Keyword(null,"init","init",1017141378),(function (this$,editor){lt.object.merge_BANG_.call(null,this$,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"editor","editor",4001043679),editor], null)); +var editor_content = lt.object.__GT_content.call(null,editor);var frame = lt.util.dom.parent.call(null,editor_content);var toggler = lt.objs.langs.ruby.live.live_toggler.call(null,this$);lt.util.dom.append.call(null,toggler,editor_content); +return lt.util.dom.append.call(null,frame,toggler); +})); +lt.objs.langs.ruby.live.live_off = (function live_off(editor){lt.object.remove_tags.call(null,editor,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"editor.ruby.live","editor.ruby.live",651374769)], null)); +var temp__4092__auto__ = new cljs.core.Keyword("lt.objs.langs.ruby.live","live-toggler","lt.objs.langs.ruby.live/live-toggler",4433482468).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,editor));if(cljs.core.truth_(temp__4092__auto__)) +{var toggler = temp__4092__auto__;return lt.object.merge_BANG_.call(null,toggler,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"live","live",1017226334),false], null)); +} else +{return null; +} +}); +lt.objs.langs.ruby.live.live_on = (function live_on(editor){lt.objs.eval.get_client_BANG_.call(null,new cljs.core.PersistentArrayMap(null, 4, [new cljs.core.Keyword(null,"command","command",1964298941),new cljs.core.Keyword(null,"editor.eval.ruby","editor.eval.ruby",3156763677),new cljs.core.Keyword(null,"origin","origin",4300251800),editor,new cljs.core.Keyword(null,"info","info",1017141280),new cljs.core.Keyword(null,"info","info",1017141280).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,editor)),new cljs.core.Keyword(null,"create","create",3956577390),lt.objs.langs.ruby.live.try_connect], null)); +if(cljs.core.truth_(new cljs.core.Keyword("lt.objs.langs.ruby.live","live-toggler","lt.objs.langs.ruby.live/live-toggler",4433482468).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,editor)))) +{} else +{lt.object.merge_BANG_.call(null,editor,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("lt.objs.langs.ruby.live","live-toggler","lt.objs.langs.ruby.live/live-toggler",4433482468),lt.object.create.call(null,new cljs.core.Keyword("lt.objs.langs.ruby.live","live-toggler","lt.objs.langs.ruby.live/live-toggler",4433482468),editor)], null)); +} +lt.object.add_tags.call(null,editor,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"editor.ruby.live","editor.ruby.live",651374769)], null)); +return lt.object.merge_BANG_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby.live","live-toggler","lt.objs.langs.ruby.live/live-toggler",4433482468).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,editor)),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"live","live",1017226334),true], null)); +}); +lt.objs.langs.ruby.live.__BEH__live_toggle = (function __BEH__live_toggle(editor){if(cljs.core.truth_(lt.object.has_tag_QMARK_.call(null,editor,new cljs.core.Keyword(null,"editor.ruby.live","editor.ruby.live",651374769)))) +{lt.objs.langs.ruby.live.live_off.call(null,editor); +} else +{lt.objs.langs.ruby.live.live_on.call(null,editor); +} +return lt.objs.editor.focus.call(null,editor); +}); +lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby.live","live-toggle","lt.objs.langs.ruby.live/live-toggle",4551923820),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.live.__BEH__live_toggle,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"live.toggle!","live.toggle!",4497782717),null], null), null)); +lt.objs.command.command.call(null,new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"command","command",1964298941),new cljs.core.Keyword(null,"instarepl.ruby.toggle-live","instarepl.ruby.toggle-live",3967667655),new cljs.core.Keyword(null,"desc","desc",1016984067),"Ruby Instarepl: Toggle live mode",new cljs.core.Keyword(null,"exec","exec",1017031683),(function (){var temp__4092__auto__ = pool.last_active.call(null);if(cljs.core.truth_(temp__4092__auto__)) +{var ed = temp__4092__auto__;return lt.object.raise.call(null,ed,new cljs.core.Keyword(null,"live.toggle!","live.toggle!",4497782717)); +} else +{return null; +} +})], null)); +} +if(!lt.util.load.provided_QMARK_('lt.objs.langs.ruby.watch')) { +goog.provide('lt.objs.langs.ruby.watch'); +goog.require('cljs.core'); +lt.objs.langs.ruby.watch.ruby_watch = (function ruby_watch(meta,src){var meta_str = [cljs.core.str("%q("),cljs.core.str(JSON.stringify(cljs.core.clj__GT_js.call(null,meta))),cljs.core.str(")")].join('');return [cljs.core.str("LtWatch.watch("),cljs.core.str(src),cljs.core.str(", JSON.parse("),cljs.core.str(meta_str),cljs.core.str("))")].join(''); +}); +lt.objs.langs.ruby.watch.__BEH__watch_src = (function __BEH__watch_src(editor,cur,meta,src){return lt.objs.langs.ruby.watch.ruby_watch.call(null,meta,src); +}); +lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby.watch","watch-src","lt.objs.langs.ruby.watch/watch-src",1881958148),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.watch.__BEH__watch_src,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"watch.src+","watch.src+",868749304),null], null), null)); +lt.objs.langs.ruby.watch.__BEH__ruby_watch = (function __BEH__ruby_watch(editor,res){var temp__4092__auto__ = cljs.core.get.call(null,new cljs.core.Keyword(null,"watches","watches",2139868463).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,editor)),new cljs.core.Keyword(null,"id","id",1013907597).cljs$core$IFn$_invoke$arity$1(new cljs.core.Keyword(null,"meta","meta",1017252215).cljs$core$IFn$_invoke$arity$1(res)));if(cljs.core.truth_(temp__4092__auto__)) +{var watch = temp__4092__auto__;var str_result = new cljs.core.Keyword(null,"result","result",4374444943).cljs$core$IFn$_invoke$arity$1(res);return object.raise.call(null,new cljs.core.Keyword(null,"inline-result","inline-result",656479555).cljs$core$IFn$_invoke$arity$1(watch),new cljs.core.Keyword(null,"update!","update!",779473898),str_result); +} else +{return null; +} +}); +lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby.watch","ruby-watch","lt.objs.langs.ruby.watch/ruby-watch",2861672890),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.watch.__BEH__ruby_watch,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"editor.eval.ruby.watch","editor.eval.ruby.watch",2992089406),null], null), null)); +} +if(!lt.util.load.provided_QMARK_('lt.objs.langs.ruby.image')) { +goog.provide('lt.objs.langs.ruby.image'); +goog.require('cljs.core'); +goog.require('lt.object'); +goog.require('lt.object'); +lt.objs.langs.ruby.image.image = (function image(src){var e__8111__auto__ = crate.core.html.call(null,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"img","img",1014008629),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"src","src",1014018390),[cljs.core.str("data:image/png;base64,"),cljs.core.str(src)].join('')], null)], null));var seq__8243_8271 = cljs.core.seq.call(null,cljs.core.partition.call(null,2,cljs.core.PersistentVector.EMPTY));var chunk__8244_8272 = null;var count__8245_8273 = 0;var i__8246_8274 = 0;while(true){ +if((i__8246_8274 < count__8245_8273)) +{var vec__8247_8275 = cljs.core._nth.call(null,chunk__8244_8272,i__8246_8274);var ev__8112__auto___8276 = cljs.core.nth.call(null,vec__8247_8275,0,null);var func__8113__auto___8277 = cljs.core.nth.call(null,vec__8247_8275,1,null);lt.util.dom.on.call(null,e__8111__auto__,ev__8112__auto___8276,func__8113__auto___8277); { -var G__9272 = seq__9214_9265; -var G__9273 = chunk__9215_9266; -var G__9274 = count__9216_9267; -var G__9275 = (i__9217_9268 + 1); -seq__9214_9265 = G__9272; -chunk__9215_9266 = G__9273; -count__9216_9267 = G__9274; -i__9217_9268 = G__9275; +var G__8278 = seq__8243_8271; +var G__8279 = chunk__8244_8272; +var G__8280 = count__8245_8273; +var G__8281 = (i__8246_8274 + 1); +seq__8243_8271 = G__8278; +chunk__8244_8272 = G__8279; +count__8245_8273 = G__8280; +i__8246_8274 = G__8281; continue; } } else -{var temp__4092__auto___9276 = cljs.core.seq.call(null,seq__9214_9265);if(temp__4092__auto___9276) -{var seq__9214_9277__$1 = temp__4092__auto___9276;if(cljs.core.chunked_seq_QMARK_.call(null,seq__9214_9277__$1)) -{var c__7497__auto___9278 = cljs.core.chunk_first.call(null,seq__9214_9277__$1);{ -var G__9279 = cljs.core.chunk_rest.call(null,seq__9214_9277__$1); -var G__9280 = c__7497__auto___9278; -var G__9281 = cljs.core.count.call(null,c__7497__auto___9278); -var G__9282 = 0; -seq__9214_9265 = G__9279; -chunk__9215_9266 = G__9280; -count__9216_9267 = G__9281; -i__9217_9268 = G__9282; +{var temp__4092__auto___8282 = cljs.core.seq.call(null,seq__8243_8271);if(temp__4092__auto___8282) +{var seq__8243_8283__$1 = temp__4092__auto___8282;if(cljs.core.chunked_seq_QMARK_.call(null,seq__8243_8283__$1)) +{var c__7497__auto___8284 = cljs.core.chunk_first.call(null,seq__8243_8283__$1);{ +var G__8285 = cljs.core.chunk_rest.call(null,seq__8243_8283__$1); +var G__8286 = c__7497__auto___8284; +var G__8287 = cljs.core.count.call(null,c__7497__auto___8284); +var G__8288 = 0; +seq__8243_8271 = G__8285; +chunk__8244_8272 = G__8286; +count__8245_8273 = G__8287; +i__8246_8274 = G__8288; continue; } } else -{var vec__9219_9283 = cljs.core.first.call(null,seq__9214_9277__$1);var ev__8112__auto___9284 = cljs.core.nth.call(null,vec__9219_9283,0,null);var func__8113__auto___9285 = cljs.core.nth.call(null,vec__9219_9283,1,null);lt.util.dom.on.call(null,e__8111__auto__,ev__8112__auto___9284,func__8113__auto___9285); +{var vec__8248_8289 = cljs.core.first.call(null,seq__8243_8283__$1);var ev__8112__auto___8290 = cljs.core.nth.call(null,vec__8248_8289,0,null);var func__8113__auto___8291 = cljs.core.nth.call(null,vec__8248_8289,1,null);lt.util.dom.on.call(null,e__8111__auto__,ev__8112__auto___8290,func__8113__auto___8291); { -var G__9286 = cljs.core.next.call(null,seq__9214_9277__$1); -var G__9287 = null; -var G__9288 = 0; -var G__9289 = 0; -seq__9214_9265 = G__9286; -chunk__9215_9266 = G__9287; -count__9216_9267 = G__9288; -i__9217_9268 = G__9289; +var G__8292 = cljs.core.next.call(null,seq__8243_8283__$1); +var G__8293 = null; +var G__8294 = 0; +var G__8295 = 0; +seq__8243_8271 = G__8292; +chunk__8244_8272 = G__8293; +count__8245_8273 = G__8294; +i__8246_8274 = G__8295; continue; } } @@ -322,77 +432,45 @@ break; } return e__8111__auto__; }); -lt.objs.langs.ruby.__BEH__ruby_image = (function __BEH__ruby_image(editor,img){return lt.object.raise.call(null,editor,new cljs.core.Keyword(null,"editor.result.underline","editor.result.underline",541343758),lt.objs.langs.ruby.image.call(null,new cljs.core.Keyword(null,"image","image",1114217677).cljs$core$IFn$_invoke$arity$1(img)),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"line","line",1017226086),new cljs.core.Keyword(null,"end","end",1014004813).cljs$core$IFn$_invoke$arity$1(new cljs.core.Keyword(null,"meta","meta",1017252215).cljs$core$IFn$_invoke$arity$1(img)),new cljs.core.Keyword(null,"start-line","start-line",3689311729),new cljs.core.Keyword(null,"start","start",1123661780).cljs$core$IFn$_invoke$arity$1(new cljs.core.Keyword(null,"meta","meta",1017252215).cljs$core$IFn$_invoke$arity$1(img))], null)); -}); -lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","ruby-image","lt.objs.langs.ruby/ruby-image",4590768692),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.__BEH__ruby_image,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"editor.eval.ruby.image","editor.eval.ruby.image",2979499466),null], null), null)); -lt.objs.langs.ruby.__BEH__ruby_printer = (function __BEH__ruby_printer(editor,p){return lt.objs.console.loc_log.call(null,new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"file","file",1017047278),lt.objs.files.basename.call(null,new cljs.core.Keyword(null,"file","file",1017047278).cljs$core$IFn$_invoke$arity$1(p)),new cljs.core.Keyword(null,"line","line",1017226086),"stdout",new cljs.core.Keyword(null,"content","content",1965434859),new cljs.core.Keyword(null,"msg","msg",1014012659).cljs$core$IFn$_invoke$arity$1(p)], null)); -}); -lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","ruby-printer","lt.objs.langs.ruby/ruby-printer",864442805),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.__BEH__ruby_printer,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"editor.eval.ruby.print","editor.eval.ruby.print",2986120988),null], null), null)); -lt.objs.langs.ruby.__BEH__eval_BANG_ = (function __BEH__eval_BANG_(this$,event){var map__9221 = event;var map__9221__$1 = ((cljs.core.seq_QMARK_.call(null,map__9221))?cljs.core.apply.call(null,cljs.core.hash_map,map__9221):map__9221);var origin = cljs.core.get.call(null,map__9221__$1,new cljs.core.Keyword(null,"origin","origin",4300251800));var info = cljs.core.get.call(null,map__9221__$1,new cljs.core.Keyword(null,"info","info",1017141280));var client = new cljs.core.Keyword(null,"default","default",2558708147).cljs$core$IFn$_invoke$arity$1(new cljs.core.Keyword(null,"client","client",3951159101).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,origin)));lt.objs.notifos.working.call(null,""); -return lt.objs.clients.send.call(null,lt.objs.eval.get_client_BANG_.call(null,new cljs.core.PersistentArrayMap(null, 4, [new cljs.core.Keyword(null,"command","command",1964298941),new cljs.core.Keyword(null,"editor.eval.ruby","editor.eval.ruby",3156763677),new cljs.core.Keyword(null,"origin","origin",4300251800),origin,new cljs.core.Keyword(null,"info","info",1017141280),info,new cljs.core.Keyword(null,"create","create",3956577390),lt.objs.langs.ruby.try_connect], null)),new cljs.core.Keyword(null,"editor.eval.ruby","editor.eval.ruby",3156763677),info,new cljs.core.Keyword(null,"only","only",1017320222),origin); -}); -lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","eval!","lt.objs.langs.ruby/eval!",1872936343),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.__BEH__eval_BANG_,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"eval!","eval!",1110791799),null], null), null)); -lt.objs.langs.ruby.__BEH__connect = (function __BEH__connect(this$,path){return lt.objs.langs.ruby.try_connect.call(null,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"info","info",1017141280),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"path","path",1017337751),path], null)], null)); -}); -lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","connect","lt.objs.langs.ruby/connect",2360156914),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.__BEH__connect,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"connect","connect",1965255772),null], null), null)); -lt.object.object_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","ruby-lang","lt.objs.langs.ruby/ruby-lang",3812976763),new cljs.core.Keyword(null,"tags","tags",1017456523),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"ruby.lang","ruby.lang",3458842868),null], null), null)); -lt.objs.langs.ruby.ruby = lt.object.create.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","ruby-lang","lt.objs.langs.ruby/ruby-lang",3812976763)); -lt.objs.sidebar.clients.add_connector.call(null,new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"name","name",1017277949),"Ruby",new cljs.core.Keyword(null,"desc","desc",1016984067),"Select a directory to serve as the root of your ruby project.",new cljs.core.Keyword(null,"connect","connect",1965255772),(function (){return lt.objs.dialogs.dir.call(null,lt.objs.langs.ruby.ruby,new cljs.core.Keyword(null,"connect","connect",1965255772)); -})], null)); -lt.objs.langs.ruby.__BEH__ruby_exe = (function __BEH__ruby_exe(this$,exe){return lt.object.merge_BANG_.call(null,lt.objs.langs.ruby.ruby,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("lt.objs.langs.ruby","ruby-exe","lt.objs.langs.ruby/ruby-exe",1735754269),exe], null)); -}); -lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","ruby-exe","lt.objs.langs.ruby/ruby-exe",1735754269),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.__BEH__ruby_exe,new cljs.core.Keyword(null,"desc","desc",1016984067),"Ruby: Set the path to the ruby executable for clients",new cljs.core.Keyword(null,"params","params",4313443576),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"label","label",1116631654),"path",new cljs.core.Keyword(null,"type","type",1017479852),new cljs.core.Keyword(null,"path","path",1017337751)], null)], null),new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"object.instant","object.instant",773332388),null], null), null),new cljs.core.Keyword(null,"type","type",1017479852),new cljs.core.Keyword(null,"user","user",1017503549),new cljs.core.Keyword(null,"exclusive","exclusive",2700522000),true); -lt.objs.langs.ruby.__BEH__use_rvm = (function __BEH__use_rvm(this$){return lt.object.merge_BANG_.call(null,lt.objs.langs.ruby.ruby,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("lt.objs.langs.ruby","use-rvm?","lt.objs.langs.ruby/use-rvm?",3656895808),true], null)); -}); -lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","use-rvm","lt.objs.langs.ruby/use-rvm",3201581913),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.__BEH__use_rvm,new cljs.core.Keyword(null,"desc","desc",1016984067),"Ruby: Use RVM when loading REPL",new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"object.instant","object.instant",773332388),null], null), null),new cljs.core.Keyword(null,"type","type",1017479852),new cljs.core.Keyword(null,"user","user",1017503549),new cljs.core.Keyword(null,"exclusive","exclusive",2700522000),true); -lt.objs.langs.ruby.__BEH__rvm_path = (function __BEH__rvm_path(this$,path){return lt.object.merge_BANG_.call(null,lt.objs.langs.ruby.ruby,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("lt.objs.langs.ruby","rvm-path","lt.objs.langs.ruby/rvm-path",1422692051),path], null)); -}); -lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","rvm-path","lt.objs.langs.ruby/rvm-path",1422692051),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.__BEH__rvm_path,new cljs.core.Keyword(null,"desc","desc",1016984067),"Ruby: Path to RVM init script",new cljs.core.Keyword(null,"params","params",4313443576),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"label","label",1116631654),"path",new cljs.core.Keyword(null,"type","type",1017479852),new cljs.core.Keyword(null,"path","path",1017337751)], null)], null),new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"object.instant","object.instant",773332388),null], null), null),new cljs.core.Keyword(null,"type","type",1017479852),new cljs.core.Keyword(null,"user","user",1017503549),new cljs.core.Keyword(null,"exclusive","exclusive",2700522000),true); -lt.objs.langs.ruby.__BEH__use_rbenv = (function __BEH__use_rbenv(this$){return lt.object.merge_BANG_.call(null,lt.objs.langs.ruby.ruby,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("lt.objs.langs.ruby","use-rbenv?","lt.objs.langs.ruby/use-rbenv?",615998644),true], null)); -}); -lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","use-rbenv","lt.objs.langs.ruby/use-rbenv",4653496197),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.__BEH__use_rbenv,new cljs.core.Keyword(null,"desc","desc",1016984067),"Ruby: Use rbenv when loading REPL",new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"object.instant","object.instant",773332388),null], null), null),new cljs.core.Keyword(null,"type","type",1017479852),new cljs.core.Keyword(null,"user","user",1017503549),new cljs.core.Keyword(null,"exclusive","exclusive",2700522000),true); -lt.objs.langs.ruby.live_toggler = (function live_toggler(this$){var e__8111__auto__ = crate.core.html.call(null,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"div#instarepl","div#instarepl",2561476298),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"span","span",1017440956),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"class","class",1108647146),crate.binding.bound.call(null,this$,(function (p1__9222_SHARP_){return [cljs.core.str("livetoggler "),cljs.core.str((cljs.core.truth_(new cljs.core.Keyword(null,"live","live",1017226334).cljs$core$IFn$_invoke$arity$1(p1__9222_SHARP_))?null:"off"))].join(''); -}))], null),"live"], null)], null));var seq__9229_9290 = cljs.core.seq.call(null,cljs.core.partition.call(null,2,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"click","click",1108654330),(function (e){lt.util.dom.prevent.call(null,e); -return lt.object.raise.call(null,new cljs.core.Keyword(null,"editor","editor",4001043679).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,this$)),new cljs.core.Keyword(null,"live.toggle!","live.toggle!",4497782717)); -})], null)));var chunk__9230_9291 = null;var count__9231_9292 = 0;var i__9232_9293 = 0;while(true){ -if((i__9232_9293 < count__9231_9292)) -{var vec__9233_9294 = cljs.core._nth.call(null,chunk__9230_9291,i__9232_9293);var ev__8112__auto___9295 = cljs.core.nth.call(null,vec__9233_9294,0,null);var func__8113__auto___9296 = cljs.core.nth.call(null,vec__9233_9294,1,null);lt.util.dom.on.call(null,e__8111__auto__,ev__8112__auto___9295,func__8113__auto___9296); +lt.objs.langs.ruby.image.canvas = (function canvas(){var e__8111__auto__ = crate.core.html.call(null,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"canvas","canvas",3941165258)], null));var seq__8255_8296 = cljs.core.seq.call(null,cljs.core.partition.call(null,2,cljs.core.PersistentVector.EMPTY));var chunk__8256_8297 = null;var count__8257_8298 = 0;var i__8258_8299 = 0;while(true){ +if((i__8258_8299 < count__8257_8298)) +{var vec__8259_8300 = cljs.core._nth.call(null,chunk__8256_8297,i__8258_8299);var ev__8112__auto___8301 = cljs.core.nth.call(null,vec__8259_8300,0,null);var func__8113__auto___8302 = cljs.core.nth.call(null,vec__8259_8300,1,null);lt.util.dom.on.call(null,e__8111__auto__,ev__8112__auto___8301,func__8113__auto___8302); { -var G__9297 = seq__9229_9290; -var G__9298 = chunk__9230_9291; -var G__9299 = count__9231_9292; -var G__9300 = (i__9232_9293 + 1); -seq__9229_9290 = G__9297; -chunk__9230_9291 = G__9298; -count__9231_9292 = G__9299; -i__9232_9293 = G__9300; +var G__8303 = seq__8255_8296; +var G__8304 = chunk__8256_8297; +var G__8305 = count__8257_8298; +var G__8306 = (i__8258_8299 + 1); +seq__8255_8296 = G__8303; +chunk__8256_8297 = G__8304; +count__8257_8298 = G__8305; +i__8258_8299 = G__8306; continue; } } else -{var temp__4092__auto___9301 = cljs.core.seq.call(null,seq__9229_9290);if(temp__4092__auto___9301) -{var seq__9229_9302__$1 = temp__4092__auto___9301;if(cljs.core.chunked_seq_QMARK_.call(null,seq__9229_9302__$1)) -{var c__7497__auto___9303 = cljs.core.chunk_first.call(null,seq__9229_9302__$1);{ -var G__9304 = cljs.core.chunk_rest.call(null,seq__9229_9302__$1); -var G__9305 = c__7497__auto___9303; -var G__9306 = cljs.core.count.call(null,c__7497__auto___9303); -var G__9307 = 0; -seq__9229_9290 = G__9304; -chunk__9230_9291 = G__9305; -count__9231_9292 = G__9306; -i__9232_9293 = G__9307; +{var temp__4092__auto___8307 = cljs.core.seq.call(null,seq__8255_8296);if(temp__4092__auto___8307) +{var seq__8255_8308__$1 = temp__4092__auto___8307;if(cljs.core.chunked_seq_QMARK_.call(null,seq__8255_8308__$1)) +{var c__7497__auto___8309 = cljs.core.chunk_first.call(null,seq__8255_8308__$1);{ +var G__8310 = cljs.core.chunk_rest.call(null,seq__8255_8308__$1); +var G__8311 = c__7497__auto___8309; +var G__8312 = cljs.core.count.call(null,c__7497__auto___8309); +var G__8313 = 0; +seq__8255_8296 = G__8310; +chunk__8256_8297 = G__8311; +count__8257_8298 = G__8312; +i__8258_8299 = G__8313; continue; } } else -{var vec__9234_9308 = cljs.core.first.call(null,seq__9229_9302__$1);var ev__8112__auto___9309 = cljs.core.nth.call(null,vec__9234_9308,0,null);var func__8113__auto___9310 = cljs.core.nth.call(null,vec__9234_9308,1,null);lt.util.dom.on.call(null,e__8111__auto__,ev__8112__auto___9309,func__8113__auto___9310); +{var vec__8260_8314 = cljs.core.first.call(null,seq__8255_8308__$1);var ev__8112__auto___8315 = cljs.core.nth.call(null,vec__8260_8314,0,null);var func__8113__auto___8316 = cljs.core.nth.call(null,vec__8260_8314,1,null);lt.util.dom.on.call(null,e__8111__auto__,ev__8112__auto___8315,func__8113__auto___8316); { -var G__9311 = cljs.core.next.call(null,seq__9229_9302__$1); -var G__9312 = null; -var G__9313 = 0; -var G__9314 = 0; -seq__9229_9290 = G__9311; -chunk__9230_9291 = G__9312; -count__9231_9292 = G__9313; -i__9232_9293 = G__9314; +var G__8317 = cljs.core.next.call(null,seq__8255_8308__$1); +var G__8318 = null; +var G__8319 = 0; +var G__8320 = 0; +seq__8255_8296 = G__8317; +chunk__8256_8297 = G__8318; +count__8257_8298 = G__8319; +i__8258_8299 = G__8320; continue; } } @@ -403,42 +481,9 @@ break; } return e__8111__auto__; }); -lt.object.object_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","live-toggler","lt.objs.langs.ruby/live-toggler",1570963903),new cljs.core.Keyword(null,"tags","tags",1017456523),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("lt.objs.langs.ruby","live-toggler","lt.objs.langs.ruby/live-toggler",1570963903),null], null), null),new cljs.core.Keyword(null,"name","name",1017277949),"Live Mode Toggler",new cljs.core.Keyword(null,"live","live",1017226334),true,new cljs.core.Keyword(null,"init","init",1017141378),(function (this$,editor){lt.object.merge_BANG_.call(null,this$,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"editor","editor",4001043679),editor], null)); -var editor_content = lt.object.__GT_content.call(null,editor);var frame = lt.util.dom.parent.call(null,editor_content);var toggler = lt.objs.langs.ruby.live_toggler.call(null,this$);lt.util.dom.append.call(null,toggler,editor_content); -return lt.util.dom.append.call(null,frame,toggler); -})); -lt.objs.langs.ruby.live_off = (function live_off(editor){lt.object.remove_tags.call(null,editor,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"editor.ruby.live","editor.ruby.live",651374769)], null)); -var temp__4092__auto__ = new cljs.core.Keyword("lt.objs.langs.ruby","live-toggler","lt.objs.langs.ruby/live-toggler",1570963903).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,editor));if(cljs.core.truth_(temp__4092__auto__)) -{var toggler = temp__4092__auto__;return lt.object.merge_BANG_.call(null,toggler,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"live","live",1017226334),false], null)); -} else -{return null; -} -}); -lt.objs.langs.ruby.live_on = (function live_on(editor){lt.objs.eval.get_client_BANG_.call(null,new cljs.core.PersistentArrayMap(null, 4, [new cljs.core.Keyword(null,"command","command",1964298941),new cljs.core.Keyword(null,"editor.eval.ruby","editor.eval.ruby",3156763677),new cljs.core.Keyword(null,"origin","origin",4300251800),editor,new cljs.core.Keyword(null,"info","info",1017141280),new cljs.core.Keyword(null,"info","info",1017141280).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,editor)),new cljs.core.Keyword(null,"create","create",3956577390),lt.objs.langs.ruby.try_connect], null)); -if(cljs.core.truth_(new cljs.core.Keyword("lt.objs.langs.ruby","live-toggler","lt.objs.langs.ruby/live-toggler",1570963903).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,editor)))) -{} else -{lt.object.merge_BANG_.call(null,editor,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("lt.objs.langs.ruby","live-toggler","lt.objs.langs.ruby/live-toggler",1570963903),lt.object.create.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","live-toggler","lt.objs.langs.ruby/live-toggler",1570963903),editor)], null)); -} -lt.object.add_tags.call(null,editor,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"editor.ruby.live","editor.ruby.live",651374769)], null)); -return lt.object.merge_BANG_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","live-toggler","lt.objs.langs.ruby/live-toggler",1570963903).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,editor)),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"live","live",1017226334),true], null)); -}); -lt.objs.langs.ruby.__BEH__live_toggle = (function __BEH__live_toggle(editor){if(cljs.core.truth_(lt.object.has_tag_QMARK_.call(null,editor,new cljs.core.Keyword(null,"editor.ruby.live","editor.ruby.live",651374769)))) -{lt.objs.langs.ruby.live_off.call(null,editor); -} else -{lt.objs.langs.ruby.live_on.call(null,editor); -} -return lt.objs.editor.focus.call(null,editor); -}); -lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","live-toggle","lt.objs.langs.ruby/live-toggle",1454132583),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.__BEH__live_toggle,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"live.toggle!","live.toggle!",4497782717),null], null), null)); -lt.objs.command.command.call(null,new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"command","command",1964298941),new cljs.core.Keyword(null,"instarepl.ruby.toggle-live","instarepl.ruby.toggle-live",3967667655),new cljs.core.Keyword(null,"desc","desc",1016984067),"Ruby Instarepl: Toggle live mode",new cljs.core.Keyword(null,"exec","exec",1017031683),(function (){var temp__4092__auto__ = lt.objs.editor.pool.last_active.call(null);if(cljs.core.truth_(temp__4092__auto__)) -{var ed = temp__4092__auto__;return lt.object.raise.call(null,ed,new cljs.core.Keyword(null,"live.toggle!","live.toggle!",4497782717)); -} else -{return null; -} -})], null)); -lt.objs.langs.ruby.__BEH__client_enable_logging = (function __BEH__client_enable_logging(this$){return lt.object.merge_BANG_.call(null,lt.objs.langs.ruby.ruby,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword("lt.objs.langs.ruby","enable-client-logging?","lt.objs.langs.ruby/enable-client-logging?",1197315652),true], null)); +lt.objs.langs.ruby.image.__BEH__ruby_image = (function __BEH__ruby_image(editor,img){return lt.object.raise.call(null,editor,new cljs.core.Keyword(null,"editor.result.underline","editor.result.underline",541343758),lt.objs.langs.ruby.image.image.call(null,new cljs.core.Keyword(null,"image","image",1114217677).cljs$core$IFn$_invoke$arity$1(img)),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"line","line",1017226086),new cljs.core.Keyword(null,"end","end",1014004813).cljs$core$IFn$_invoke$arity$1(new cljs.core.Keyword(null,"meta","meta",1017252215).cljs$core$IFn$_invoke$arity$1(img)),new cljs.core.Keyword(null,"start-line","start-line",3689311729),new cljs.core.Keyword(null,"start","start",1123661780).cljs$core$IFn$_invoke$arity$1(new cljs.core.Keyword(null,"meta","meta",1017252215).cljs$core$IFn$_invoke$arity$1(img))], null)); }); -lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby","client-enable-logging","lt.objs.langs.ruby/client-enable-logging",3821188453),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.__BEH__client_enable_logging,new cljs.core.Keyword(null,"desc","desc",1016984067),"Ruby: log ruby client output to lt_client.log",new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"object.instant","object.instant",773332388),null], null), null),new cljs.core.Keyword(null,"type","type",1017479852),new cljs.core.Keyword(null,"user","user",1017503549),new cljs.core.Keyword(null,"exclusive","exclusive",2700522000),true); +lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.objs.langs.ruby.image","ruby-image","lt.objs.langs.ruby.image/ruby-image",4224227221),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.objs.langs.ruby.image.__BEH__ruby_image,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"editor.eval.ruby.image","editor.eval.ruby.image",2979499466),null], null), null)); } //# sourceMappingURL=ruby instarepl_compiled.js.map \ No newline at end of file diff --git a/ruby instarepl_compiled.js.map b/ruby instarepl_compiled.js.map index 9055244..febb45b 100644 --- a/ruby instarepl_compiled.js.map +++ b/ruby instarepl_compiled.js.map @@ -2,81 +2,98 @@ "file": "compiled.map", "sources": - ["src/lt/plugins/ruby.cljs"], - "lineCount":442, + ["src/lt/plugins/image.cljs", + "src/lt/plugins/watch.cljs", + "src/lt/plugins/live.cljs", + "src/lt/plugins/config.cljs", + "src/lt/plugins/eval.cljs", + "src/lt/plugins/client.cljs", + "src/lt/plugins/ruby.cljs"], + "lineCount":487, "mappings": - "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", "names": - ["lt.objs.langs.ruby/plugin-dir", "lt.objs.plugins/find-plugin", - "lt.objs.langs.ruby/shell", "lt.util.load/node-module", - "lt.objs.langs.ruby/rb-path", "lt.objs.files/join", - "lt.objs.langs.ruby/runner-path", "lt.objs.langs.ruby/__BEH__on-out", - "lt.object/behavior*", "this", "data", "out", "lt.object/update!", - "cljs.core/str", "lt.objs.notifos/done-working", "lt.object/merge!", - "lt.objs.langs.ruby/__BEH__on-error", "cljs.core/deref", - "lt.objs.langs.ruby/__BEH__on-exit", "lt.objs.popup/popup!", + ["e__8111__auto__", "crate.core/html", "seq__8243", "cljs.core/seq", + "cljs.core/partition", "chunk__8244", "count__8245", "i__8246", + "vec__8247", "cljs.core/-nth", "ev__8112__auto__", "cljs.core/nth", + "func__8113__auto__", "lt.util.dom/on", "temp__4092__auto__", + "cljs.core/chunked-seq?", "c__7497__auto__", "cljs.core/chunk-first", + "cljs.core/chunk-rest", "cljs.core/count", "vec__8248", + "cljs.core/first", "cljs.core/next", + "lt.objs.langs.ruby.image/image", "src", "seq__8255", "chunk__8256", + "count__8257", "i__8258", "vec__8259", "vec__8260", + "lt.objs.langs.ruby.image/canvas", + "lt.objs.langs.ruby.image/__BEH__ruby-image", "lt.object/behavior*", + "editor", "img", "lt.object/raise", + "lt.objs.langs.ruby.watch/ruby-watch", "meta", "meta-str", + "js/JSON.stringify", "cljs.core/clj->js", + "lt.objs.langs.ruby.watch/__BEH__watch-src", "cur", + "lt.objs.langs.ruby.watch/__BEH__ruby-watch", "res", "watch", + "cljs.core/get", "cljs.core/deref", "str-result", "object/raise", + "lt.objs.langs.ruby.live/__BEH__eval-on-change", "_cm", "delta", + "doc", "lt.objs.editor/get-doc", "new-lc", + "lt.objs.editor/last-line", "last-line", "lt.objs.editor/line", + "old-lc", "or__6755__auto__", "lt.object/merge!", + "and__6743__auto__", "cljs.core/=", "code", "line", "info", + "cljs.core/assoc", "cljs.core/empty?", "cljs.core/not", + "lt.objs.langs.ruby.live/ruby", "seq__8328", "chunk__8329", + "count__8330", "i__8331", "vec__8332", "vec__8333", + "lt.objs.langs.ruby.live/live-toggler", "this", "p1__8321#", + "lt.objs.langs.ruby.live/bound", "e", "lt.util.dom/prevent", + "lt.object/object*", "editor-content", "lt.object/->content", + "frame", "lt.util.dom/parent", "toggler", "lt.util.dom/append", + "lt.objs.langs.ruby.live/live-off", "lt.object/remove-tags", + "lt.objs.langs.ruby.live/live-on", "lt.objs.eval/get-client!", + "lt.objs.langs.ruby.live/try-connect", "lt.object/create", + "lt.object/add-tags", "lt.objs.langs.ruby.live/__BEH__live-toggle", + "lt.object/has-tag?", "lt.objs.editor/focus", + "lt.objs.command/command", "ed", "pool/last-active", + "lt.objs.langs.ruby.config/__BEH__ruby-exe", "exe", + "lt.objs.langs.ruby/ruby", + "lt.objs.langs.ruby.config/__BEH__use-rvm", + "lt.objs.langs.ruby.config/__BEH__rvm-path", "path", + "lt.objs.langs.ruby.config/__BEH__use-rbenv", + "lt.objs.langs.ruby.config/__BEH__client-enable-logging", + "lt.objs.langs.ruby.eval/__BEH__on-eval", + "lt.plugins.watches/watched-range", + "lt.objs.langs.ruby.eval/__BEH__on-eval__DOT__one", "pos", + "lt.objs.editor/->cursor", "lt.objs.editor/selection?", + "lt.objs.editor/selection", "lt.objs.langs.ruby.eval/__BEH__eval!", + "event", "map__8226", "cljs.core/seq?", "cljs.core/apply", + "cljs.core/hash-map", "origin", "client", "lt.objs.notifos/working", + "lt.objs.clients/send", "lt.objs.langs.ruby.client/try-connect", + "lt.objs.langs.ruby.eval/__BEH__ruby-result", + "lt.objs.notifos/done-working", + "lt.objs.langs.ruby.eval/__BEH__ruby-success", + "lt.objs.langs.ruby.eval/__BEH__ruby-incomplete", + "lt.objs.langs.ruby.eval/__BEH__ruby-exception", "ex", + "lt.objs.langs.ruby.eval/__BEH__ruby-printer", "p", + "lt.objs.console/loc-log", "lt.objs.files/basename", + "lt.objs.langs.ruby.client/plugin-dir", + "lt.objs.plugins/find-plugin", "lt.objs.langs.ruby.client/shell", + "lt.util.load/node-module", "lt.objs.langs.ruby.client/rb-path", + "lt.objs.files/join", "lt.objs.langs.ruby.client/runner-path", + "lt.objs.langs.ruby.client/__BEH__on-out", "data", "out", + "lt.object/update!", "cljs.core/str", + "lt.objs.langs.ruby.client/__BEH__on-error", + "lt.objs.langs.ruby.client/__BEH__on-exit", "lt.objs.popup/popup!", "lt.objs.clients/rem!", "lt.objs.proc/kill-all", - "lt.object/destroy!", "lt.object/object*", "client", - "lt.objs.langs.ruby/escape-spaces", "s", "cljs.core/=", - "lt.objs.files/separator", "lt.objs.langs.ruby/bash-escape-spaces", - "clojure.string/replace", "p__9188", "map__9190", "cljs.core/seq?", - "cljs.core/apply", "cljs.core/hash-map", "cljs.core/get", - "lt.objs.langs.ruby/run-rb", "path", "project-path", "name", "info", - "n", "lt.objs.notifos/working", "obj", "lt.object/create", - "use-runner", "or__6755__auto__", "lt.objs.langs.ruby/ruby", - "keys->env", "env", "cljs.core/zipmap", "cljs.core/map", - "cljs.core/keys", "cljs.core/select-keys", "cljs.core/cycle", - "cljs.core/assoc", "command", "args", "lt.objs.clients.tcp/port", + "lt.object/destroy!", "lt.objs.langs.ruby.client/escape-spaces", "s", + "lt.objs.files/separator", + "lt.objs.langs.ruby.client/bash-escape-spaces", + "clojure.string/replace", "p__8195", "map__8197", + "lt.objs.langs.ruby.client/run-rb", "project-path", "name", "n", + "obj", "use-runner", "keys->env", "env", "cljs.core/zipmap", + "cljs.core/map", "cljs.core/keys", "cljs.core/select-keys", + "cljs.core/cycle", "command", "args", "lt.objs.clients.tcp/port", "lt.objs.clients/->id", "lt.objs.proc/exec", - "lt.objs.langs.ruby/check-ruby", "lt.objs.langs.ruby/check-client", - "lt.objs.files/exists?", "lt.objs.langs.ruby/find-project", "p", - "roots", "lt.objs.files/get-roots", "cur", "prev", - "cljs.core/empty?", "lt.objs.files/dir?", "lt.objs.files/parent", - "and__6743__auto__", "lt.objs.langs.ruby/notify", "map__9192", - "ruby", "ruby-client", "cljs.core/not", "lt.objs.platform/open", - "lt.objs.command/exec!", "lt.objs.langs.ruby/try-connect", - "lt.objs.langs.ruby/check-all", "p__9193", "map__9195", - "lt.objs.clients/client!", "lt.objs.langs.ruby/ruby-watch", "meta", - "src", "meta-str", "js/JSON.stringify", "cljs.core/clj->js", - "lt.objs.langs.ruby/__BEH__watch-src", "editor", - "lt.objs.langs.ruby/__BEH__on-eval", "lt.object/raise", - "lt.plugins.watches/watched-range", "lt.objs.editor/last-line", - "lt.objs.langs.ruby/__BEH__on-eval__DOT__one", "pos", - "lt.objs.editor/->cursor", "code", "lt.objs.editor/selection?", - "lt.objs.editor/line", "lt.objs.editor/selection", - "lt.objs.langs.ruby/__BEH__eval-on-change", "_cm", "delta", "doc", - "lt.objs.editor/get-doc", "new-lc", "last-line", "old-lc", "line", - "lt.objs.langs.ruby/__BEH__ruby-watch", "res", "temp__4092__auto__", - "watch", "str-result", "lt.objs.langs.ruby/__BEH__ruby-result", - "lt.objs.langs.ruby/__BEH__ruby-success", - "lt.objs.langs.ruby/__BEH__ruby-incomplete", - "lt.objs.langs.ruby/__BEH__ruby-exception", "ex", "e__8111__auto__", - "crate.core/html", "seq__9202", "cljs.core/seq", - "cljs.core/partition", "chunk__9203", "count__9204", "i__9205", - "vec__9206", "cljs.core/-nth", "ev__8112__auto__", "cljs.core/nth", - "func__8113__auto__", "lt.util.dom/on", "cljs.core/chunked-seq?", - "c__7497__auto__", "cljs.core/chunk-first", "cljs.core/chunk-rest", - "cljs.core/count", "vec__9207", "cljs.core/first", "cljs.core/next", - "lt.objs.langs.ruby/image", "seq__9214", "chunk__9215", - "count__9216", "i__9217", "vec__9218", "vec__9219", - "lt.objs.langs.ruby/canvas", "lt.objs.langs.ruby/__BEH__ruby-image", - "img", "lt.objs.langs.ruby/__BEH__ruby-printer", - "lt.objs.console/loc-log", "lt.objs.files/basename", - "lt.objs.langs.ruby/__BEH__eval!", "event", "map__9221", "origin", - "lt.objs.clients/send", "lt.objs.eval/get-client!", - "lt.objs.langs.ruby/__BEH__connect", - "lt.objs.sidebar.clients/add-connector", "lt.objs.dialogs/dir", - "lt.objs.langs.ruby/__BEH__ruby-exe", "exe", - "lt.objs.langs.ruby/__BEH__use-rvm", - "lt.objs.langs.ruby/__BEH__rvm-path", - "lt.objs.langs.ruby/__BEH__use-rbenv", "seq__9229", "chunk__9230", - "count__9231", "i__9232", "vec__9233", "vec__9234", - "lt.objs.langs.ruby/live-toggler", "p1__9222#", - "crate.binding/bound", "e", "lt.util.dom/prevent", "editor-content", - "lt.object/->content", "frame", "lt.util.dom/parent", "toggler", - "lt.util.dom/append", "lt.objs.langs.ruby/live-off", - "lt.object/remove-tags", "lt.objs.langs.ruby/live-on", - "lt.object/add-tags", "lt.objs.langs.ruby/__BEH__live-toggle", - "lt.object/has-tag?", "lt.objs.editor/focus", - "lt.objs.command/command", "ed", "lt.objs.editor.pool/last-active", - "lt.objs.langs.ruby/__BEH__client-enable-logging"]} \ No newline at end of file + "lt.objs.langs.ruby.client/check-ruby", + "lt.objs.langs.ruby.client/check-client", "lt.objs.files/exists?", + "lt.objs.langs.ruby.client/find-project", "roots", + "lt.objs.files/get-roots", "prev", "lt.objs.files/dir?", + "lt.objs.files/parent", "lt.objs.langs.ruby.client/notify", + "map__8199", "ruby", "ruby-client", "platform/open", + "lt.objs.command/exec!", "lt.objs.langs.ruby.client/__BEH__connect", + "lt.objs.langs.ruby.client/check-all", "p__8200", "map__8202", + "lt.objs.clients/client!", "lt.objs.sidebar.clients/add-connector", + "lt.objs.dialogs/dir"]} \ No newline at end of file diff --git a/ruby.behaviors b/ruby.behaviors index 1f7e55c..68ebd34 100644 --- a/ruby.behaviors +++ b/ruby.behaviors @@ -1,24 +1,25 @@ {:+ {:app [(:lt.objs.plugins/load-js ["codemirror/ruby.js" "ruby instarepl_compiled.js"])] :clients [] - :editor.ruby [:lt.objs.langs.ruby/ruby-exception :lt.objs.langs.ruby/on-eval - :lt.objs.langs.ruby/on-eval.one - :lt.objs.langs.ruby/ruby-result - :lt.objs.langs.ruby/ruby-success - :lt.objs.langs.ruby/ruby-printer - :lt.objs.langs.ruby/ruby-watch - :lt.objs.langs.ruby/ruby-incomplete - :lt.objs.langs.ruby/live-toggle + :editor.ruby [:lt.objs.langs.ruby.eval/ruby-exception + :lt.objs.langs.ruby.eval/on-eval + :lt.objs.langs.ruby.eval/on-eval.one + :lt.objs.langs.ruby.eval/ruby-result + :lt.objs.langs.ruby.eval/ruby-success + :lt.objs.langs.ruby.eval/ruby-printer + :lt.objs.langs.ruby.watch/ruby-watch + :lt.objs.langs.ruby.eval/ruby-incomplete + :lt.objs.langs.ruby.live/live-toggle ;; :lt.objs.langs.ruby/ruby-image - :lt.objs.langs.ruby/watch-src + :lt.objs.langs.ruby.watch/watch-src ;; we don't seem to be able to unload part of watchable, so we're manually adding the pieces we need ;; [:lt.object/add-tag :watchable] :lt.plugins.watches/watch! :lt.plugins.watches/unwatch! ] - :editor.ruby.live [:lt.objs.langs.ruby/eval-on-change] + :editor.ruby.live [:lt.objs.langs.ruby.live/eval-on-change] :files [(:lt.objs.files/file-types [{:name "Ruby" :exts [:rb, :gemspec, :Rakefile, :Gemfile] :mime "text/x-ruby" :tags [:editor.ruby]}])] - :ruby.lang [:lt.objs.langs.ruby/eval! :lt.objs.langs.ruby/connect]} + :ruby.lang [:lt.objs.langs.ruby.eval/eval! :lt.objs.langs.ruby.client/connect]} ;; :- {:editor.ruby [:lt.plugins.watches/eval-on-watch-or-unwatch]} diff --git a/src/lt/plugins/client.cljs b/src/lt/plugins/client.cljs new file mode 100644 index 0000000..197fcfa --- /dev/null +++ b/src/lt/plugins/client.cljs @@ -0,0 +1,165 @@ +(ns lt.objs.langs.ruby.client + (:require [lt.object :as object] + [lt.objs.command :as cmd] + [lt.objs.files :as files] + [lt.objs.popup :as popup] + [lt.objs.plugins :as plugins] + [lt.objs.proc :as proc] + [lt.objs.clients :as clients] + [lt.objs.notifos :as notifos] + [lt.util.load :as load] + [lt.objs.sidebar.clients :as scl] + [lt.objs.dialogs :as dialogs] + [lt.objs.clients.tcp :as tcp] + + [lt.objs.langs.ruby :as ruby :refer [ruby]]) + (:require-macros [lt.macros :refer [behavior]])) + +(def plugin-dir (plugins/find-plugin "Ruby Instarepl")) +(def shell (load/node-module "shelljs")) +(def rb-path (files/join plugin-dir "rb-src/lt_client.rb")) +(def runner-path (files/join plugin-dir "rb-src/lt_client_runner.sh")) + +(behavior ::on-out + :triggers #{:proc.out} + :reaction (fn [this data] + (let [out (.toString data)] + (object/update! this [:buffer] str out) + (if (> (.indexOf out "Connected") -1) + (do + (notifos/done-working) + (object/merge! this {:connected true})) + (object/update! this [:buffer] str data))))) + +(behavior ::on-error + :triggers #{:proc.error} + :reaction (fn [this data] + (let [out (.toString data)] + (when-not (> (.indexOf (:buffer @this) "Connected") -1) + (object/update! this [:buffer] str data) + )) + )) + +(behavior ::on-exit + :triggers #{:proc.exit} + :reaction (fn [this data] + ;(object/update! this [:buffer] str data) + (when-not (:connected @this) + (notifos/done-working) + (popup/popup! {:header "We couldn't connect." + :body [:span "Looks like there was an issue trying to connect + to the project. Here's what we got:" [:pre (:buffer @this)]] + :buttons [{:label "close"}]}) + (clients/rem! (:client @this))) + (proc/kill-all (:procs @this)) + (object/destroy! this) + )) + +(object/object* ::connecting-notifier + :triggers [] + :behaviors [::on-exit ::on-error ::on-out] + :init (fn [this client] + (object/merge! this {:client client :buffer ""}) + nil)) + +(defn escape-spaces [s] + (if (= files/separator "\\") + (str "\"" s "\"") + s)) + +(defn bash-escape-spaces [s] + (clojure.string/replace s " " "\\ ")) + +(defn run-rb [{:keys [path project-path name client] :as info}] + (let [n (notifos/working "Connecting..") + obj (object/create ::connecting-notifier client) + use-runner (or (::use-rvm? @ruby) (::use-rbenv? @ruby)) + keys->env {::use-rbenv? :LT_USE_RBENV, ::use-rvm? :LT_USE_RVM, ::enable-client-logging? :LT_ENABLE_CLIENT_LOGGING} + env (zipmap (map keys->env + (keys (select-keys @ruby (keys keys->env)))) + (cycle [true])) + env (if (::rvm-path @ruby) (assoc env :LT_RVM_PATH (::rvm-path @ruby)) env) + command (if use-runner + "bash" + (or (::ruby-exe @ruby) "ruby")) + args (if use-runner + [runner-path project-path (bash-escape-spaces rb-path) tcp/port (clients/->id client)] + [(escape-spaces rb-path) tcp/port (clients/->id client)])] + (proc/exec {:command command + :args args + :cwd project-path + :env env + :obj obj}))) + +(defn check-ruby [obj] + (assoc obj :ruby (or (::ruby-exe @ruby) + (.which shell "ruby")))) + +(defn check-client [obj] + (assoc obj :ruby-client (files/exists? rb-path))) + +(defn find-project [obj] + (let [p (:path obj) + roots (files/get-roots)] + (loop [cur p + prev ""] + (if (or (empty? cur) + (roots cur) + (= cur prev)) + (assoc obj :project-path + (if (files/dir? p) p (files/parent p))) + (if (and (files/dir? cur) + (files/exists? (files/join cur "Gemfile"))) + (assoc obj :project-path cur) + (recur (files/parent cur) cur)))))) + +(defn notify [obj] + (let [{:keys [ruby project-path path ruby-client client]} obj] + (cond + (or (not ruby) (empty? ruby)) (do + (clients/rem! client) + (notifos/done-working) + (popup/popup! {:header "We couldn't find Ruby." + :body "In order to evaluate in Ruby files, a Ruby interpreter has to be installed and on your system PATH." + :buttons [{:label "Download Ruby" + :action (fn [] + (platform/open "https://www.ruby-lang.org/en/downloads/"))} + {:label "ok"}]})) + (not project-path) (do + (clients/rem! client) + (notifos/done-working) + (popup/popup! {:header "We couldn't find this file." + :body "In order to evaluate in Ruby files, the file has to be on disk somewhere." + :buttons [{:label "Save this file" + :action (fn [] + (cmd/exec! :save) + (try-connect obj))} + {:label "Cancel" + :action (fn [] + )}]})) + :else (run-rb obj)) + obj)) + +(behavior ::connect + :triggers #{:connect} + :reaction (fn [this path] + (try-connect {:info {:path path}}))) + +(defn check-all [obj] + (-> obj + (check-ruby) + (check-client) + (find-project) + (notify))) + +(defn try-connect [{:keys [info]}] + (let [path (:path info) + client (clients/client! :ruby.client)] + (check-all {:path path + :client client}) + client)) + +(scl/add-connector {:name "Ruby" + :desc "Select a directory to serve as the root of your ruby project." + :connect (fn [] + (dialogs/dir ruby :connect))}) diff --git a/src/lt/plugins/config.cljs b/src/lt/plugins/config.cljs new file mode 100644 index 0000000..9e15c2e --- /dev/null +++ b/src/lt/plugins/config.cljs @@ -0,0 +1,50 @@ +(ns lt.objs.langs.ruby.config + (:require [lt.object :as object] + [lt.objs.langs.ruby :as ruby :refer [ruby]]) + + (:require-macros [lt.macros :refer [behavior]])) + +(behavior :lt.objs.langs.ruby/ruby-exe + :triggers #{:object.instant} + :desc "Ruby: Set the path to the ruby executable for clients" + :type :user + :params [{:label "path" + :type :path}] + :exclusive true + :reaction (fn [this exe] + (object/merge! ruby {:lt.objs.langs.ruby.client/ruby-exe exe}))) + + +(behavior :lt.objs.langs.ruby/use-rvm + :triggers #{:object.instant} + :desc "Ruby: Use RVM when loading REPL" + :type :user + :exclusive true + :reaction (fn [this] + (object/merge! ruby {:lt.objs.langs.ruby.client/use-rvm? true}))) + + +(behavior :lt.objs.langs.ruby/rvm-path + :triggers #{:object.instant} + :desc "Ruby: Path to RVM init script" + :type :user + :params [{:label "path", :type :path}] + :exclusive true + :reaction (fn [this path] + (object/merge! ruby {:lt.objs.langs.ruby.client/rvm-path path}))) + +(behavior :lt.objs.langs.ruby/use-rbenv + :triggers #{:object.instant} + :desc "Ruby: Use rbenv when loading REPL" + :type :user + :exclusive true + :reaction (fn [this] + (object/merge! ruby {:lt.objs.langs.ruby.client/use-rbenv? true}))) + +(behavior :lt.objs.langs.ruby/client-enable-logging + :triggers #{:object.instant} + :desc "Ruby: log ruby client output to lt_client.log" + :type :user + :exclusive true + :reaction (fn [this] + (object/merge! ruby {:lt.objs.langs.ruby.client/enable-client-logging? true}))) diff --git a/src/lt/plugins/eval.cljs b/src/lt/plugins/eval.cljs new file mode 100644 index 0000000..00b9d44 --- /dev/null +++ b/src/lt/plugins/eval.cljs @@ -0,0 +1,92 @@ +(ns lt.objs.langs.ruby.eval + (:require [lt.object :as object] + [lt.objs.editor :as ed] + [lt.objs.eval :as eval] + [lt.plugins.watches :as watches] + [lt.objs.clients :as clients] + [lt.objs.notifos :as notifos] + [lt.objs.console :as console] + [lt.objs.files :as files] + + [lt.objs.langs.ruby :as ruby :refer [ruby]] + [lt.objs.langs.ruby.client :as client]) + + (:require-macros [lt.macros :refer [behavior]])) + +(behavior ::on-eval + :triggers #{:eval} + :reaction (fn [editor] + (object/raise ruby :eval! {:origin editor + :info (assoc (@editor :info) + :code (watches/watched-range editor nil nil lt.objs.langs.ruby.watch/ruby-watch) + :meta {:start 0, :end (ed/last-line editor)})}))) + +(behavior ::on-eval.one + :triggers #{:eval.one} + :reaction (fn [editor] + (let [pos (ed/->cursor editor) + code (if (ed/selection? editor) + (watches/watched-range editor nil nil lt.objs.langs.ruby.watch/ruby-watch) + (ed/line editor (:line pos))) + info (:info @editor) + info (if (ed/selection? editor) + (assoc info + :code (ed/selection editor) + :meta {:start (-> (ed/->cursor editor "start") :line) + :end (-> (ed/->cursor editor "end") :line)}) + (assoc info :pos pos :code code :meta {:start (:line pos) :end (:line pos)}))] + (object/raise ruby :eval! {:origin editor + :info info})))) + +(behavior ::eval! + :triggers #{:eval!} + :reaction (fn [this event] + (let [{:keys [info origin]} event + client (-> @origin :client :default)] + (notifos/working "") + (clients/send (eval/get-client! {:command :editor.eval.ruby + :origin origin + :info info + :create client/try-connect}) + :editor.eval.ruby + info + :only + origin)))) + +(behavior ::ruby-result + :triggers #{:editor.eval.ruby.result} + :reaction (fn [editor res] + (notifos/done-working) + (object/raise editor :editor.result (:result res) {:line (:end (:meta res)) + :start-line (-> res :meta :start)}))) + +(behavior ::ruby-success + :triggers #{:editor.eval.ruby.success} + :reaction (fn [editor res] + (notifos/done-working) + (object/raise editor :editor.result "✓" {:line (-> res :meta :end) + :start-line (-> res :meta :start)}))) + +(behavior ::ruby-incomplete + :triggers #{:editor.eval.ruby.incomplete} + :reaction (fn [editor res] + (notifos/done-working) + (object/raise editor :editor.result "…" {:line (-> res :meta :end) + :start-line (-> res :meta :start)}))) + +(behavior ::ruby-exception + :triggers #{:editor.eval.ruby.exception} + :reaction (fn [editor ex] + (notifos/done-working) + (object/raise editor :editor.exception (:ex ex) {:line (-> ex :meta :end) + :start-line (-> ex :meta :start)}) + )) + +(behavior ::ruby-printer + :triggers #{:editor.eval.ruby.print} + :reaction (fn [editor p] + (console/loc-log {:file (files/basename (:file p)) + :line "stdout" + :content (:msg p)}))) + + diff --git a/src/lt/plugins/image.cljs b/src/lt/plugins/image.cljs new file mode 100644 index 0000000..4701abb --- /dev/null +++ b/src/lt/plugins/image.cljs @@ -0,0 +1,18 @@ +(ns lt.objs.langs.ruby.image + (:require [lt.object :as object]) + + (:require-macros [lt.macros :refer [behavior defui]])) + +(defui image [src] + [:img {:src (str "data:image/png;base64," src)}]) + +(defui canvas [] + [:canvas]) + +(behavior ::ruby-image + :triggers #{:editor.eval.ruby.image} + :reaction (fn [editor img] + ;(console/log (pr-str img)) + (object/raise editor :editor.result.underline (image (:image img)) {:line (-> img :meta :end) + :start-line (-> img :meta :start)}) + )) diff --git a/src/lt/plugins/live.cljs b/src/lt/plugins/live.cljs new file mode 100644 index 0000000..07cf465 --- /dev/null +++ b/src/lt/plugins/live.cljs @@ -0,0 +1,94 @@ +(ns lt.objs.langs.ruby.live + (:require [lt.objs.command :as cmd] + [lt.object :as object] + [lt.objs.editor :as ed] + [lt.objs.eval :as eval] + [lt.util.dom :as dom]) + + (:require-macros [lt.macros :refer [behavior defui]])) + +;; test if we increased the length of the doc by 1 and have a blank for the last line +(behavior ::eval-on-change + :triggers #{:change} + :debounce 300 + :reaction (fn [editor _cm delta] + (let [ + doc (ed/get-doc editor) + new-lc (ed/last-line editor) + last-line (ed/line editor new-lc) + + old-lc (or (::line-count @editor) + (do (object/merge! editor {::line-count 0}) + (::line-count @editor)))] + (when (and (.test #"^\s*$" last-line) + (= 1 (- new-lc old-lc))) + (let [code (ed/line editor (- new-lc 1)) + line (- new-lc 1) + info (-> (:info @editor) + (assoc :code code) + (assoc :meta {:start line :end line}))] + (when (and (not (empty? code)) + (not (.test #"^\s*$" code))) + (object/raise ruby :eval! {:origin editor :info info})))) + (object/merge! editor {::line-count new-lc})))) + +(defui live-toggler [this] + [:div#instarepl [:span {:class (bound this #(str "livetoggler " (when-not (:live %) "off")))} "live"]] + :click (fn [e] + (dom/prevent e) + (object/raise (:editor @this) :live.toggle!))) + +(object/object* ::live-toggler + :tags #{::live-toggler} + :name "Live Mode Toggler" + :live true + :init (fn [this editor] + (object/merge! this {:editor editor}) +;; (dom/prepend (object/->content editor) (live-toggler this)) +;; (let [frame (dom/parent (object/->content editor)) +;; editor-content (dom/remove (object/->content editor)) +;; wrapped-toggler (dom/append (live-toggler this))] +;; (dom/append wrapped-toggler editor-content)) + (let [editor-content (object/->content editor) + frame (dom/parent editor-content) + toggler (live-toggler this)] + (dom/append toggler editor-content) + (dom/append frame toggler) + ) + )) + + + +(defn live-off [editor] + (object/remove-tags editor [:editor.ruby.live]) + (when-let [toggler (::live-toggler @editor)] (object/merge! toggler {:live false}))) + +(defn live-on [editor] + ;; connect if necessary + (eval/get-client! {:command :editor.eval.ruby + :origin editor + :info (:info @editor) + :create try-connect}) +;; ;; add the toggle button if necessary + (when-not (::live-toggler @editor) + (object/merge! editor {::live-toggler (object/create ::live-toggler editor)})) + (object/add-tags editor [:editor.ruby.live]) + (object/merge! (::live-toggler @editor) {:live true}) + ) + +(behavior ::live-toggle + :triggers #{:live.toggle!} + :reaction (fn [editor] + (if (object/has-tag? editor :editor.ruby.live) + (live-off editor) + (live-on editor)) + (ed/focus editor))) + + + +(cmd/command {:command :instarepl.ruby.toggle-live + :desc "Ruby Instarepl: Toggle live mode" + :exec (fn [] + (when-let [ed (pool/last-active)] + (object/raise ed :live.toggle!) + ))}) diff --git a/src/lt/plugins/ruby.cljs b/src/lt/plugins/ruby.cljs index 6933c2a..a6cd7cb 100644 --- a/src/lt/plugins/ruby.cljs +++ b/src/lt/plugins/ruby.cljs @@ -1,424 +1,8 @@ (ns lt.objs.langs.ruby - (:require [lt.object :as object] - [lt.objs.eval :as eval] - [lt.objs.console :as console] - [lt.objs.command :as cmd] - [lt.objs.clients.tcp :as tcp] - [lt.objs.sidebar.clients :as scl] - [lt.objs.dialogs :as dialogs] - [lt.objs.files :as files] - [lt.objs.popup :as popup] - [lt.objs.platform :as platform] - [lt.objs.editor :as ed] - [lt.objs.editor.pool :as pool] - [lt.objs.plugins :as plugins] - [lt.plugins.watches :as watches] - [lt.objs.proc :as proc] - [clojure.string :as string] - [lt.objs.clients :as clients] - [lt.objs.notifos :as notifos] - [lt.util.load :as load] - [crate.binding :refer [bound subatom]] - [crate.core :as crate] - [lt.util.dom :as dom] - [lt.util.cljs :refer [js->clj]]) - (:require-macros [lt.macros :refer [behavior defui]])) - -;;**************************************************** -;; Proc -;;**************************************************** - -(def plugin-dir (plugins/find-plugin "Ruby Instarepl")) -(def shell (load/node-module "shelljs")) -(def rb-path (files/join plugin-dir "rb-src/lt_client.rb")) -(def runner-path (files/join plugin-dir "rb-src/lt_client_runner.sh")) - -(behavior ::on-out - :triggers #{:proc.out} - :reaction (fn [this data] - (let [out (.toString data)] - (object/update! this [:buffer] str out) - (if (> (.indexOf out "Connected") -1) - (do - (notifos/done-working) - (object/merge! this {:connected true})) - (object/update! this [:buffer] str data))))) - -(behavior ::on-error - :triggers #{:proc.error} - :reaction (fn [this data] - (let [out (.toString data)] - (when-not (> (.indexOf (:buffer @this) "Connected") -1) - (object/update! this [:buffer] str data) - )) - )) - -(behavior ::on-exit - :triggers #{:proc.exit} - :reaction (fn [this data] - ;(object/update! this [:buffer] str data) - (when-not (:connected @this) - (notifos/done-working) - (popup/popup! {:header "We couldn't connect." - :body [:span "Looks like there was an issue trying to connect - to the project. Here's what we got:" [:pre (:buffer @this)]] - :buttons [{:label "close"}]}) - (clients/rem! (:client @this))) - (proc/kill-all (:procs @this)) - (object/destroy! this) - )) - -(object/object* ::connecting-notifier - :triggers [] - :behaviors [::on-exit ::on-error ::on-out] - :init (fn [this client] - (object/merge! this {:client client :buffer ""}) - nil)) - -(defn escape-spaces [s] - (if (= files/separator "\\") - (str "\"" s "\"") - s)) - -(defn bash-escape-spaces [s] - (clojure.string/replace s " " "\\ ") - ) - -(defn run-rb [{:keys [path project-path name client] :as info}] - (let [n (notifos/working "Connecting..") - obj (object/create ::connecting-notifier client) - use-runner (or (::use-rvm? @ruby) (::use-rbenv? @ruby)) - keys->env {::use-rbenv? :LT_USE_RBENV, ::use-rvm? :LT_USE_RVM, ::enable-client-logging? :LT_ENABLE_CLIENT_LOGGING} - env (zipmap (map keys->env - (keys (select-keys @ruby (keys keys->env)))) - (cycle [true])) - env (if (::rvm-path @ruby) (assoc env :LT_RVM_PATH (::rvm-path @ruby)) env) - command (if use-runner - "bash" - (or (::ruby-exe @ruby) "ruby")) - args (if use-runner - [runner-path project-path (bash-escape-spaces rb-path) tcp/port (clients/->id client)] - [(escape-spaces rb-path) tcp/port (clients/->id client)])] - (proc/exec {:command command - :args args - :cwd project-path - :env env - :obj obj}))) - -(defn check-ruby [obj] - (assoc obj :ruby (or (::ruby-exe @ruby) - (.which shell "ruby")))) - -(defn check-client [obj] - (assoc obj :ruby-client (files/exists? rb-path))) - -(defn find-project [obj] - (let [p (:path obj) - roots (files/get-roots)] - (loop [cur p - prev ""] - (if (or (empty? cur) - (roots cur) - (= cur prev)) - (assoc obj :project-path - (if (files/dir? p) p (files/parent p))) - (if (and (files/dir? cur) - (files/exists? (files/join cur "Gemfile"))) - (assoc obj :project-path cur) - (recur (files/parent cur) cur)))))) - -(defn notify [obj] - (let [{:keys [ruby project-path path ruby-client client]} obj] - (cond - (or (not ruby) (empty? ruby)) (do - (clients/rem! client) - (notifos/done-working) - (popup/popup! {:header "We couldn't find Ruby." - :body "In order to evaluate in Ruby files, a Ruby interpreter has to be installed and on your system PATH." - :buttons [{:label "Download Ruby" - :action (fn [] - (platform/open "https://www.ruby-lang.org/en/downloads/"))} - {:label "ok"}]})) - (not project-path) (do - (clients/rem! client) - (notifos/done-working) - (popup/popup! {:header "We couldn't find this file." - :body "In order to evaluate in Ruby files, the file has to be on disk somewhere." - :buttons [{:label "Save this file" - :action (fn [] - (cmd/exec! :save) - (try-connect obj))} - {:label "Cancel" - :action (fn [] - )}]})) - :else (run-rb obj)) - obj)) - -(defn check-all [obj] - (-> obj - (check-ruby) - (check-client) - (find-project) - (notify))) - -;;**************************************************** -;; Eval -;;**************************************************** - -(defn try-connect [{:keys [info]}] - (let [path (:path info) - client (clients/client! :ruby.client)] - (check-all {:path path - :client client}) - client)) - -(defn ruby-watch [meta src] - (let [meta-str (str "%q(" (js/JSON.stringify (clj->js meta)) ")")] - (str "LtWatch.watch(" src ", JSON.parse(" meta-str "))"))) - -(behavior ::watch-src - :triggers #{:watch.src+} - :reaction (fn [editor cur meta src] - (ruby-watch meta src))) - -(behavior ::on-eval - :triggers #{:eval} - :reaction (fn [editor] - (object/raise ruby :eval! {:origin editor - :info (assoc (@editor :info) - :code (watches/watched-range editor nil nil ruby-watch) - :meta {:start 0, :end (ed/last-line editor)})}))) - -(behavior ::on-eval.one - :triggers #{:eval.one} - :reaction (fn [editor] - (let [pos (ed/->cursor editor) - code (if (ed/selection? editor) - (watches/watched-range editor nil nil ruby-watch) - (ed/line editor (:line pos))) - info (:info @editor) - info (if (ed/selection? editor) - (assoc info - :code (ed/selection editor) - :meta {:start (-> (ed/->cursor editor "start") :line) - :end (-> (ed/->cursor editor "end") :line)}) - (assoc info :pos pos :code code :meta {:start (:line pos) :end (:line pos)}))] - (object/raise ruby :eval! {:origin editor - :info info})))) - - - -;; test if we increased the length of the doc by 1 and have a blank for the last line -(behavior ::eval-on-change - :triggers #{:change} - :debounce 300 - :reaction (fn [editor _cm delta] - (let [ - doc (ed/get-doc editor) - new-lc (ed/last-line editor) - last-line (ed/line editor new-lc) - - old-lc (or (::line-count @editor) - (do (object/merge! editor {::line-count 0}) - (::line-count @editor)))] - (when (and (.test #"^\s*$" last-line) - (= 1 (- new-lc old-lc))) - (let [code (ed/line editor (- new-lc 1)) - line (- new-lc 1) - info (-> (:info @editor) - (assoc :code code) - (assoc :meta {:start line :end line}))] - (when (and (not (empty? code)) - (not (.test #"^\s*$" code))) - (object/raise ruby :eval! {:origin editor :info info})))) - (object/merge! editor {::line-count new-lc})))) - -(behavior ::ruby-watch - :triggers #{:editor.eval.ruby.watch} - :reaction (fn [editor res] - (when-let [watch (get (:watches @editor) (-> res :meta :id))] - (let [str-result (:result res)] - (object/raise (:inline-result watch) :update! str-result))))) - -(behavior ::ruby-result - :triggers #{:editor.eval.ruby.result} - :reaction (fn [editor res] - (notifos/done-working) - (object/raise editor :editor.result (:result res) {:line (:end (:meta res)) - :start-line (-> res :meta :start)}))) - -(behavior ::ruby-success - :triggers #{:editor.eval.ruby.success} - :reaction (fn [editor res] - (notifos/done-working) - (object/raise editor :editor.result "✓" {:line (-> res :meta :end) - :start-line (-> res :meta :start)}))) - -(behavior ::ruby-incomplete - :triggers #{:editor.eval.ruby.incomplete} - :reaction (fn [editor res] - (notifos/done-working) - (object/raise editor :editor.result "…" {:line (-> res :meta :end) - :start-line (-> res :meta :start)}))) - -(behavior ::ruby-exception - :triggers #{:editor.eval.ruby.exception} - :reaction (fn [editor ex] - (notifos/done-working) - (object/raise editor :editor.exception (:ex ex) {:line (-> ex :meta :end) - :start-line (-> ex :meta :start)}) - )) - -(defui image [src] - [:img {:src (str "data:image/png;base64," src)}]) - -(defui canvas [] - [:canvas]) - -(behavior ::ruby-image - :triggers #{:editor.eval.ruby.image} - :reaction (fn [editor img] - ;(console/log (pr-str img)) - (object/raise editor :editor.result.underline (image (:image img)) {:line (-> img :meta :end) - :start-line (-> img :meta :start)}) - )) - -(behavior ::ruby-printer - :triggers #{:editor.eval.ruby.print} - :reaction (fn [editor p] - (console/loc-log {:file (files/basename (:file p)) - :line "stdout" - :content (:msg p)}))) - -(behavior ::eval! - :triggers #{:eval!} - :reaction (fn [this event] - (let [{:keys [info origin]} event - client (-> @origin :client :default)] - (notifos/working "") - (clients/send (eval/get-client! {:command :editor.eval.ruby - :origin origin - :info info - :create try-connect}) - :editor.eval.ruby - info - :only - origin)))) - -(behavior ::connect - :triggers #{:connect} - :reaction (fn [this path] - (try-connect {:info {:path path}}))) - + (:require [lt.object :as object])) (object/object* ::ruby-lang :tags #{:ruby.lang}) (def ruby (object/create ::ruby-lang)) -(scl/add-connector {:name "Ruby" - :desc "Select a directory to serve as the root of your ruby project." - :connect (fn [] - (dialogs/dir ruby :connect))}) - -(behavior ::ruby-exe - :triggers #{:object.instant} - :desc "Ruby: Set the path to the ruby executable for clients" - :type :user - :params [{:label "path" - :type :path}] - :exclusive true - :reaction (fn [this exe] - (object/merge! ruby {::ruby-exe exe}))) - -(behavior ::use-rvm - :triggers #{:object.instant} - :desc "Ruby: Use RVM when loading REPL" - :type :user - :exclusive true - :reaction (fn [this] - (object/merge! ruby {::use-rvm? true}))) - -(behavior ::rvm-path - :triggers #{:object.instant} - :desc "Ruby: Path to RVM init script" - :type :user - :params [{:label "path", :type :path}] - :exclusive true - :reaction (fn [this path] - (object/merge! ruby {::rvm-path path}))) - -(behavior ::use-rbenv - :triggers #{:object.instant} - :desc "Ruby: Use rbenv when loading REPL" - :type :user - :exclusive true - :reaction (fn [this] - (object/merge! ruby {::use-rbenv? true}))) - -(defui live-toggler [this] - [:div#instarepl [:span {:class (bound this #(str "livetoggler " (when-not (:live %) "off")))} "live"]] - :click (fn [e] - (dom/prevent e) - (object/raise (:editor @this) :live.toggle!))) - -(object/object* ::live-toggler - :tags #{::live-toggler} - :name "Live Mode Toggler" - :live true - :init (fn [this editor] - (object/merge! this {:editor editor}) -;; (dom/prepend (object/->content editor) (live-toggler this)) -;; (let [frame (dom/parent (object/->content editor)) -;; editor-content (dom/remove (object/->content editor)) -;; wrapped-toggler (dom/append (live-toggler this))] -;; (dom/append wrapped-toggler editor-content)) - (let [editor-content (object/->content editor) - frame (dom/parent editor-content) - toggler (live-toggler this)] - (dom/append toggler editor-content) - (dom/append frame toggler) - ) - )) - -(defn live-off [editor] - (object/remove-tags editor [:editor.ruby.live]) - (when-let [toggler (::live-toggler @editor)] (object/merge! toggler {:live false}))) - -(defn live-on [editor] - ;; connect if necessary - (eval/get-client! {:command :editor.eval.ruby - :origin editor - :info (:info @editor) - :create try-connect}) -;; ;; add the toggle button if necessary - (when-not (::live-toggler @editor) - (object/merge! editor {::live-toggler (object/create ::live-toggler editor)})) - (object/add-tags editor [:editor.ruby.live]) - (object/merge! (::live-toggler @editor) {:live true}) - ) - -(behavior ::live-toggle - :triggers #{:live.toggle!} - :reaction (fn [editor] - (if (object/has-tag? editor :editor.ruby.live) - (live-off editor) - (live-on editor)) - (ed/focus editor))) - - - -(cmd/command {:command :instarepl.ruby.toggle-live - :desc "Ruby Instarepl: Toggle live mode" - :exec (fn [] - (when-let [ed (pool/last-active)] - (object/raise ed :live.toggle!) - ))}) - -(behavior ::client-enable-logging - :triggers #{:object.instant} - :desc "Ruby: log ruby client output to lt_client.log" - :type :user - :exclusive true - :reaction (fn [this] - (object/merge! ruby {::enable-client-logging? true}))) diff --git a/src/lt/plugins/watch.cljs b/src/lt/plugins/watch.cljs new file mode 100644 index 0000000..d3b89f8 --- /dev/null +++ b/src/lt/plugins/watch.cljs @@ -0,0 +1,18 @@ +(ns lt.objs.langs.ruby.watch + (:require-macros [lt.macros :refer [behavior]])) + +(defn ruby-watch [meta src] + (let [meta-str (str "%q(" (js/JSON.stringify (clj->js meta)) ")")] + (str "LtWatch.watch(" src ", JSON.parse(" meta-str "))"))) + + +(behavior ::watch-src + :triggers #{:watch.src+} + :reaction (fn [editor cur meta src] + (ruby-watch meta src))) +(behavior ::ruby-watch + :triggers #{:editor.eval.ruby.watch} + :reaction (fn [editor res] + (when-let [watch (get (:watches @editor) (-> res :meta :id))] + (let [str-result (:result res)] + (object/raise (:inline-result watch) :update! str-result)))))