@wshcmx/cli
Version:
Набор CLI-инструментов предназначен для автоматизации сборки и отслеживания изменений в исходном коде с последующей транспиляцией в синтаксис WebSoftHCM.
29 lines (28 loc) • 1.28 kB
JavaScript
import ts from 'typescript';
export function convertTemplateStrings() {
return (context) => (sourceFile) => {
function visit(node) {
if (ts.isTemplateExpression(node)) {
let expression;
if (node.head.text.length > 0) {
expression = ts.factory.createStringLiteral(node.head.text);
}
for (const span of node.templateSpans) {
const visitedExpression = ts.visitNode(span.expression, visit);
if (!expression) {
expression = visitedExpression;
}
else {
expression = ts.factory.createBinaryExpression(expression, ts.SyntaxKind.PlusToken, visitedExpression);
}
if (span.literal.text.length > 0) {
expression = ts.factory.createBinaryExpression(expression, ts.SyntaxKind.PlusToken, ts.factory.createStringLiteral(span.literal.text));
}
}
return expression ?? ts.factory.createStringLiteral('');
}
return ts.visitEachChild(node, visit, context);
}
return ts.visitNode(sourceFile, visit);
};
}