помеченные мелом литералы шаблона внутри строк - PullRequest
1 голос
/ 31 января 2020

я использую мел, и я строю строку программно (см. str в фрагменте ниже).

я хотел бы, чтобы мел соблюдал мою строку, как если бы он соблюдал помеченные литералы termplate .

как это можно сделать?

const chalk = require('chalk');
const p = chalk`{bold BOLD}`

const str = `{bold BOLD}`
const q = chalk`${str}`

console.log(p == q ? "ok" : "!ok")

, как видите, p и q различны - код всегда выводит !ok.

1 Ответ

0 голосов
/ 01 февраля 2020

я нашел прокси для мела , который делает именно это

const chalk = require("chalk");

const chalkish = (parts, ...substitutions) => {
  const rawResults = [];
  const cookedResults = [];
  for (var i = 0; i < parts.length; i++) {
    rawResults.push(parts.raw[i]);
    cookedResults.push(parts[i]);
    if (i < substitutions.length) {
      rawResults.push(substitutions[i]);
      cookedResults.push(substitutions[i]);
    }
  }

  const chalkParts = [cookedResults.join("")];
  chalkParts.raw = [rawResults.join("")];

  return (chalk(chalkParts));
}
...