Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | 21x 21x 13x 13x 13x 13x 7x 13x 13x 21x 21x | /**
* 每一行紧跟前导空白的插入值为多行时,保持缩进。
*
* @public
* @param literals 字面值
* @param interpolations 插入值
* @returns 返回处理后的结果
* @example
* ```typescript
* indent` ${'a\nb'}` // => ' a\n b'
* ```
*/
export function indent(
literals: TemplateStringsArray,
...interpolations: Array<string | number>
): string {
let result = ''
for (let i = 0; i < interpolations.length; i++) {
const literal = literals[i]
let interpolation = interpolations[i]
const 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
}
|