从REPL

时间:2016-03-31 05:10:08

标签: javascript node.js read-eval-print-loop

我尝试使用REPL中给出的文本更改Node&#39s的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 prop使用prompt参数获取函数,并允许您在函数内设置它,然后我可以使用事件或其他东西。

1 个答案:

答案 0 :(得分:4)

您应该可以致电repl.setPrompt('foo> ');来更改提示。