字符串中粉笔标记的模板文字
chalk tagged template literals within strings
我正在使用 chalk 并以编程方式构建字符串(请参阅下面代码段中的 str
)。
我希望粉笔像尊重 tagged termplate literals.
一样尊重我的弦
怎么做到的?
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
.
我找到了一个 proxy for chalk 可以做到这一点
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));
}
我正在使用 chalk 并以编程方式构建字符串(请参阅下面代码段中的 str
)。
我希望粉笔像尊重 tagged termplate literals.
一样尊重我的弦怎么做到的?
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
.
我找到了一个 proxy for chalk 可以做到这一点
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));
}