1
NodeのREPLのプロンプトをREPL内のテキストで変更しようとしています。REPL内からREPLプロンプトを変更する
私の元の試みは、このようなものでした。
import repl from 'repl'
let PROMPT = 'original > '
repl.start({
ignoreUndefined: true,
prompt: PROMPT,
eval: (text, context, filename, callback) => {
PROMPT = `${text} >`
return callback()
}
})
プロセスの開始時にreplのプロンプトが設定されているため、これはうまくいかないことに気付きました。
私はこのようなことを思いつきました。これは、コマンドを入力した後に新しいプロンプトで新しいreplを開始します。
import repl from 'repl'
let PROMPT = 'original > '
let REPL = createRepl(PROMPT)
function createRepl (prompt) {
return repl.start({
ignoreUndefined: true,
prompt: PROMPT,
eval: (text, context, filename, callback) => {
PROMPT = `${text.replace(/\n/, '')} >`
REPL.close()
REPL = createRepl(PROMPT)
}
})
}
この解決策はほとんどの場合、元のREPLを閉じるときにプロセスが終了するという問題があります。
私は単に、プロセスの開始後にスクリプト内からREPLプロンプトを変更しようとしています。私はこれを行うために任意の手段に開放されています。理想的にはprompt
の小道具はprompt
という引数を持つ関数を受け取り、それを関数内から設定することができれば、イベントなどを使うことができます。
:: facepalm ::ありがとうございました! – ThomasReggi