in src/commands/transliterate.ts [165:215]
function transliterateType(type: Type, rosetta: RosettaTabletReader, language: TargetLanguage): void {
transliterateDocs({ api: 'type', fqn: type.fqn }, type.docs);
switch (type.kind) {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore 7029
case TypeKind.Class:
if (type.initializer) {
transliterateDocs({ api: 'initializer', fqn: type.fqn }, type.initializer.docs);
}
// fallthrough
case TypeKind.Interface:
for (const method of type.methods ?? []) {
transliterateDocs({ api: 'member', fqn: type.fqn, memberName: method.name }, method.docs);
for (const parameter of method.parameters ?? []) {
transliterateDocs(
{ api: 'parameter', fqn: type.fqn, methodName: method.name, parameterName: parameter.name },
parameter.docs,
);
}
}
for (const property of type.properties ?? []) {
transliterateDocs({ api: 'member', fqn: type.fqn, memberName: property.name }, property.docs);
}
break;
case TypeKind.Enum:
for (const member of type.members) {
transliterateDocs({ api: 'member', fqn: type.fqn, memberName: member.name }, member.docs);
}
break;
default:
throw new Error(`Unsupported type kind: ${(type as any).kind}`);
}
function transliterateDocs(api: ApiLocation, docs: Docs | undefined) {
if (docs?.remarks) {
docs.remarks = rosetta.translateSnippetsInMarkdown(api, docs.remarks, language, true /* strict */);
}
if (docs?.example) {
const location = { api, field: { field: 'example' } } as const;
const snippet = typeScriptSnippetFromVisibleSource(docs.example, location, true /* strict */);
const translation = rosetta.translateSnippet(snippet, language);
if (translation != null) {
docs.example = translation.source;
}
}
}
}