Получение значений из stdin с Node.js & TypeScript - PullRequest
0 голосов
/ 21 сентября 2019

У меня есть несколько задач, в основном сценарий CLI, который принимает x строк, и на основе указанных строк выполняет некоторые вычисления.

Например:

Ввод:

3 // number of iterations to do something
ATCCGCTTAGAGGGATT // first string
GTCCGTTTAGAAGGTTT // second string
// 2nd iteration starts
abcdefghijklmnopqrstuvwxyz
bcdefghijklmnopqrstuvwxyza
// 3rd iteration starts
abcdefghijklmnopqrstuvwxyz0123456789
abcdefghijklmnopqrstuvwxyz0123456789

Вывод:

ATCCGCTTAGAGGGATT // first string
GTCCGTTTAGAAGGTTT // second string
*....*.....*..*.. // visual marker of differences between the two strings(*)

abcdefghijklmnopqrstuvwxyz
bcdefghijklmnopqrstuvwxyza
**************************

abcdefghijklmnopqrstuvwxyz0123456789
abcdefghijklmnopqrstuvwxyz0123456789
....................................

Что я пробовал:

const rl = require('readline').createInterface({
  input: process.stdin,
  output: process.stdout,
  prompt: ''
})

let numberOfTests = 0;
let firstText = '';
let secondText = '';
let differences = '';

rl.prompt();

rl.on('line', (line: any) => {
  let loop = 0;
  numberOfTests = line;
  firstText = line;
  secondText = line;
  calculateDifferences(firstText, secondText); // basic function that loops through the arrays and makes the visual marker.
  loop ++;
  if (loop === numberOfTests) {
    rl.close();
  }
}).on('close', () => {
  console.log('Have a great day!');
  process.exit(0);
});

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

Как вы можете отделить входы друг от друга?

Документация узла не так подробно об этом. Или я не могу понять это правильно.

1 Ответ

0 голосов
/ 22 сентября 2019

Удалось найти решение для дифференциации экземпляров rl.

После этого комментария 100% работает в моем случае использования

...