in src/jsii/assemblies.ts [114:191]
export function allSnippetSources(assembly: spec.Assembly): AssemblySnippetSource[] {
const ret: AssemblySnippetSource[] = [];
if (assembly.readme) {
ret.push({
type: 'markdown',
markdown: assembly.readme.markdown,
location: { api: 'moduleReadme', moduleFqn: assembly.name },
});
}
for (const [submoduleFqn, submodule] of Object.entries(assembly.submodules ?? {})) {
if (submodule.readme) {
ret.push({
type: 'markdown',
markdown: submodule.readme.markdown,
location: { api: 'moduleReadme', moduleFqn: submoduleFqn },
});
}
}
if (assembly.types) {
for (const type of Object.values(assembly.types)) {
emitDocs(type.docs, { api: 'type', fqn: type.fqn });
if (spec.isEnumType(type)) {
for (const m of type.members) emitDocs(m.docs, { api: 'member', fqn: type.fqn, memberName: m.name });
}
if (spec.isClassType(type)) {
emitDocsForCallable(type.initializer, type.fqn);
}
if (spec.isClassOrInterfaceType(type)) {
for (const m of type.methods ?? []) emitDocsForCallable(m, type.fqn, m.name);
for (const m of type.properties ?? []) emitDocs(m.docs, { api: 'member', fqn: type.fqn, memberName: m.name });
}
}
}
return ret;
function emitDocsForCallable(callable: spec.Callable | undefined, fqn: string, memberName?: string) {
if (!callable) {
return;
}
emitDocs(callable.docs, memberName ? { api: 'member', fqn, memberName } : { api: 'initializer', fqn });
for (const parameter of callable.parameters ?? []) {
emitDocs(parameter.docs, {
api: 'parameter',
fqn: fqn,
methodName: memberName ?? INITIALIZER_METHOD_NAME,
parameterName: parameter.name,
});
}
}
function emitDocs(docs: spec.Docs | undefined, location: ApiLocation) {
if (!docs) {
return;
}
if (docs.remarks) {
ret.push({
type: 'markdown',
markdown: docs.remarks,
location,
});
}
if (docs.example) {
ret.push({
type: 'example',
source: docs.example,
metadata: fmap(docs.custom?.[EXAMPLE_METADATA_JSDOCTAG], parseMetadataLine),
location,
});
}
}
}