vtils
Version:
一个面向业务的 JavaScript/TypeScript 实用程序库。
30 lines • 936 B
JavaScript
/**
* 每一行紧跟前导空白的插入值为多行时,保持缩进。
*
* @public
* @param literals 字面值
* @param interpolations 插入值
* @returns 返回处理后的结果
* @example
* ```typescript
* indent` ${'a\nb'}` // => ' a\n b'
* ```
*/
export function indent(literals) {
var result = '';
for (var i = 0; i < (arguments.length <= 1 ? 0 : arguments.length - 1); i++) {
var literal = literals[i];
var interpolation = i + 1 < 1 || arguments.length <= i + 1 ? undefined : arguments[i + 1];
var match = literal.match(/(?:^|[\r\n]+)([^\S\r\n]*)$/);
if (match && match[1]) {
interpolation = String(interpolation).replace(
// fix: 后行断言部分浏览器暂不支持
// /(?<=[\r\n]+)(?=[^\r\n])/g,
/([\r\n]+)(?=[^\r\n])/g, "$1" + match[1]);
}
result += literal;
result += interpolation;
}
result += literals[literals.length - 1];
return result;
}