File size: 744 Bytes
2409829
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
export function stripIndents(stringPieces: TemplateStringsArray, ...substitutions: unknown[]): string {
	const interleavedSubstitutions = stringPieces.flatMap((stringPiece, index) => [stringPiece, substitutions[index] !== undefined ? substitutions[index] : ""]);
	const stringLines = interleavedSubstitutions.join("").split("\n");

	const visibleLineTabPrefixLengths = stringLines.map((line) => (/\S/.test(line) ? (line.match(/^(\t*)/) || [])[1].length : Infinity));
	const commonTabPrefixLength = Math.min(...visibleLineTabPrefixLengths);

	const linesWithoutCommonTabPrefix = stringLines.map((line) => line.substring(commonTabPrefixLength));
	const multiLineString = linesWithoutCommonTabPrefix.join("\n");

	return multiLineString.trim();
}