@jsdocs-io/extractor
Version:
The API extractor for npm packages powering jsdocs.io
46 lines (45 loc) • 1.64 kB
JavaScript
import { docs } from "./docs.js";
import { formatSignature } from "./format-signature.js";
import { headText } from "./head-text.js";
import { id } from "./id.js";
import { isHidden } from "./is-hidden.js";
import { sourceFilePath } from "./source-file-path.js";
export async function extractEnum(containerName, exportName, declaration) {
const enumId = id(containerName, "+enum", exportName);
return {
kind: "enum",
id: enumId,
name: exportName,
docs: docs(declaration),
file: sourceFilePath(declaration),
line: declaration.getStartLineNumber(),
signature: await enumSignature(declaration),
members: await extractEnumMembers(enumId, declaration),
};
}
async function enumSignature(declaration) {
const signature = headText(declaration);
return await formatSignature("enum", signature);
}
async function extractEnumMembers(enumId, enumDeclaration) {
const members = [];
for (const declaration of enumDeclaration.getMembers()) {
if (isHidden(declaration))
continue;
const name = declaration.getName();
members.push({
kind: "enum-member",
id: id(enumId, "+member", name),
name,
docs: docs(declaration),
file: sourceFilePath(declaration),
line: declaration.getStartLineNumber(),
signature: await enumMemberSignature(declaration),
});
}
return members;
}
async function enumMemberSignature(declaration) {
const signature = declaration.getText();
return await formatSignature("enum-member", signature);
}