in src/languages/java.ts [402:437]
public override templateExpression(node: ts.TemplateExpression, renderer: JavaRenderer): OTree {
let template = '';
const parameters = new Array<OTree>();
if (node.head.rawText) {
template += node.head.rawText;
}
for (const span of node.templateSpans) {
template += '%s';
parameters.push(
renderer
.updateContext({
convertPropertyToGetter: true,
identifierAsString: false,
})
.convert(span.expression),
);
if (span.literal.rawText) {
template += span.literal.rawText;
}
}
if (parameters.length === 0) {
return new OTree([JSON.stringify(quoteStringLiteral(template))]);
}
return new OTree([
'String.format(',
`"${quoteStringLiteral(template)
// Java does not have multiline string literals, so we must replace literal newlines with %n
.replace(/\n/g, '%n')}"`,
...parameters.reduce((list, element) => list.concat(', ', element), new Array<string | OTree>()),
')',
]);
}