Подставьте и раскрасьте аргументы в console.log () - PullRequest
0 голосов
/ 19 декабря 2018

Для Node.js есть замечательный модуль chalk, который позволяет применять раскраску и форматирование текста к функции console.log().

Если я напишу что-то вроде этого:

console.log("test string substitution with coloring: %s, %s", chalk.red("red"), chalk.magenta("magenta"));    

он будет использовать подстановку строк и выводит красный и mageenta правильно окрашенные:

enter image description here

Теперь я пытаюсь сделать функции, которые принимают текст слитералы замещения в качестве первого параметра и последующего переменного количества параметров, которые должны:

  1. заменять соответствующие литералы замещения (как это делает обычный console.log());
  2. каждый переданный параметр должен иметь цветкрасный с использованием chalk.red();

Например:

function log(text, ...args) {
   // magic here
}

log("This must be %s, and %s as well", "red", "this must be red");

Это должно дать следующее:

example

Я пытался использовать console.log(text, chalk.red.apply(null, args)), но, похоже, он не дает того, что я хочу.

1 Ответ

0 голосов
/ 19 декабря 2018

Вам просто нужно распространить массив в console.log().Например, вы можете сделать это встроенным с помощью map():

let chalk = require('chalk')

console.log("test string substitution with coloring: %s and %s",  ...["red", "this must be red"].map(t => chalk.red(t)));    

Конечно, вы также можете сделать это функцией:

function log(text, ...args){
    console.log(text,  ...args.map(t => chalk.red(t)));    
}
...