function Hint () { this.el = document.createElement('yu') this.el.id = 'hint' this.cursor_hint_el = document.createElement('yu') this.cursor_hint_el.id = 'cursor_hint' this.install = function () { ronin.commander.el.appendChild(this.el) ronin.commander.el.appendChild(this.cursor_hint_el) } this.find_autocomplete = function (collection, append = '') { var target = ronin.commander.query().last var a = [] for (id in collection) { var name = collection[id].name if (name && name.substr(0, target.length) == target) { a.push(name.substr(target.length, 20) + append) } } return a } this.update = function (e = null) { var html = '' for (module_id in ronin.modules) { var module = ronin.modules[module_id] html += module_id + ' ' } var target_module = ronin.commander.query().module var target_method = Object.keys(ronin.commander.query().methods).length > 0 ? Object.keys(ronin.commander.query().methods)[0] : null if (ronin.commander.input_el.value == '') { this.el.innerHTML = html } else if (ronin.modules[target_module] && ronin.modules[target_module].methods[target_method]) { this.el.innerHTML = this.pad(ronin.commander.input_el.value) + ' ' + ronin.modules[target_module].methods[target_method].docs() } else if (ronin.modules[target_module]) { var ac = this.find_autocomplete(ronin.modules[target_module].methods, ':') if (ac.length > 0) { this.el.innerHTML = this.pad(ronin.commander.input_el.value) + "" + ac[0] + ' > Press tab to autocomplete.' } else { this.el.innerHTML = this.pad(ronin.commander.input_el.value) + ' ' + ronin.modules[target_module].hint() } } else { var ac = this.find_autocomplete(ronin.modules) if (ac.length > 0) { this.el.innerHTML = this.pad(ronin.commander.input_el.value) + "" + ac[0] + ' > Press tab to autocomplete.' } else if (ronin.commander.input_el.value == '~') { this.el.innerHTML = this.pad(ronin.commander.input_el.value) + ' > Select a color.' } else { this.el.innerHTML = this.pad(ronin.commander.input_el.value) + ' > Unknown command.' } } this.cursor_hint_el.innerHTML = ronin.cursor.hint() } this.pad = function (input) { var s = '' for (i = 0; i < input.length; i++) { s += '_' } return "" + s + '' } }