All'interno della shell Bash, posso usare tab-completion per utilizzare i nomi di file e directory suggeriti. Come posso ottenere questo risultato con nodejs e readline?Come suggerire i file con completamento della tabulazione usando readline?
Esempi:
/<Tab>
dovrebbe suggerire/root/
,/bin/
, ecc/et<Tab>
dovrebbero completare a/etc/
.fo<Tab>
deve essere compilato afoobar
presupponendo che tale file esista nella directory corrente.
Stavo pensando di usare il globbing (modello search_term.replace(/[?*]/g, "\\$&") + "*"
), ma forse c'è una libreria che ho trascurato?
Questo è il mio approccio corrente utilizzando glob, si è rotto quando si utilizza //<Tab>
in quanto restituisce il nome canonicalized e ha forse alcune altre stranezze:
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();