Запретить вывод пустых строк в readline узла - PullRequest
0 голосов
/ 07 мая 2019

Когда я нажимаю и удерживаю кнопку ENTER на моей клавиатуре, модуль readline выводит пустые строки в мой поток для записи (в данном случае это process.stdout).

Но так как я не хочу, чтобы пустые строки загромождали мою консоль, я хочу, чтобы она как-то не выводилась.

Могу ли я использовать что-то для фильтрации пустых строк в моем потоке? Может быть, использовать какой-нибудь поток преобразования?

const readline = require("readline");

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
  removeHistoryDuplicates: true
});

rl.on("line", (line) => {
  if(line.trim().length === 0) {
    // don't output anything, but it is already too late because it is already written to stream :'-(
  }
  rl.prompt();
})

1 Ответ

0 голосов
/ 07 мая 2019

используйте это

   readline.cursorTo(process.stdout, 0,0);

, ввод автоматически игнорируется и возвращается в начало

https://nodejs.org/api/readline.html#readline_readline_clearline_stream_dir

const readline = require("readline");

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
  removeHistoryDuplicates: true
});


const enterPressed=(line)=>{
    return line.replace(/[^a-zA-Z]/g, "").trim().length === 0
}

rl.on("line", (line) => {

  if(enterPressed(line)) {
     readline.cursorTo(process.stdout, 0,0);
  }
  rl.prompt();
})
...