69 lines
2.5 KiB
JavaScript
69 lines
2.5 KiB
JavaScript
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) + "<span class='autocomplete'>" + ac[0] + '</span> > 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) + "<span class='autocomplete'>" + ac[0] + '</span> > 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 "<span style='color:RGBA(0,0,0,0)'>" + s + '</span>'
|
|
}
|
|
}
|