W powłoce Basha mogę używać uzupełniania kart, aby użyć sugerowanych plików i nazw katalogów. Jak mogę to osiągnąć dzięki nodejs i readline?Jak zasugerować pliki z uzupełnianiem kart za pomocą readline?
Przykłady:
/<Tab>
powinien zaproponować/root/
,/bin/
itp/et<Tab>
powinna zakończyć się/etc/
.fo<Tab>
należy uzupełnić dofoobar
zakładając, że taki plik istnieje w bieżącym katalogu.
Myślałem o użyciu globowania (wzór search_term.replace(/[?*]/g, "\\$&") + "*"
), ale czy jest tam może biblioteka, którą przeoczyłem?
To jest moje obecne podejście używając glob, jest on uszkodzony podczas korzystania //<Tab>
jak zwraca też w postaci imienia i ma ewentualnie jakieś inne osobliwości:
function command_completion(line) {
var hits;
// likely broken, one does not simply escape a glob char
var pat = line.replace(/[?*]/g, "\\$&") + "*";
// depends: glob >= 3.0
var glob = require("glob").sync;
hits = glob(pat, {
silent: true,
nobrace: true,
noglobstar: true,
noext: true,
nocomment: true,
nonegate: true
});
return [hits, line];
}
var readline = require("readline");
rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
completer: command_completion
});
rl.prompt();