ronin/sources/scripts/commander.js
2017-09-27 10:36:55 +13:00

65 lines
1.6 KiB
JavaScript

function Commander()
{
this.el = document.createElement('yu');
this.el.id = "commander";
this.input_el = document.createElement('input');
this.input_el.value = "";
this.install = function()
{
this.el.appendChild(this.input_el);
ronin.el.appendChild(this.el);
this.input_el.focus();
}
this.validate = function(q = ronin.commander.query())
{
if(!ronin.modules[q.module]){ console.log("Unknown module",q.module); return; }
if(q.raw.indexOf("$") > -1){ console.log("Variables present"); return; }
// Update settings
for(setting_id in q.settings){
var setting_value = q.settings[setting_id];
if(!ronin.modules[q.module].settings[setting_id]){ console.log("Missing setting",setting_id); return; }
ronin.modules[q.module].settings[setting_id] = setting_value;
}
// Run methods
for(method_id in q.methods){
var method_param = q.methods[method_id];
if(!ronin.modules[q.module].methods[method_id]){ console.log("Missing method",method_id); return; }
ronin.modules[q.module].methods[method_id](method_param);
}
ronin.modules[q.module].routes = q.routes;
ronin.commander.input_el.value = "";
ronin.hint.update();
}
this.on_input = function(e)
{
ronin.hint.update();
ronin.guide.update();
}
this.blur = function()
{
this.input_el.blur();
}
this.active_module = function()
{
return this.query().module;
}
this.inject = function(str,entry_code = "$")
{
ronin.commander.input_el.value = ronin.commander.input_el.value.replace(entry_code,str);
}
this.query = function()
{
return new Query(ronin.commander.input_el.value);
}
}