dgeni-packages
Version:
A collection of dgeni packages for generating documentation from source code
48 lines • 2.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ClassExportDoc = void 0;
/* tslint:disable:no-bitwise */
const typescript_1 = require("typescript");
const ClassLikeExportDoc_1 = require("../api-doc-types/ClassLikeExportDoc");
const MethodMemberDoc_1 = require("../api-doc-types/MethodMemberDoc");
/**
* Classes are Class-like but also can contain static members
* and cannot have multiple declarations
*/
class ClassExportDoc extends ClassLikeExportDoc_1.ClassLikeExportDoc {
constructor(host, moduleDoc, symbol, aliasSymbol) {
super(host, moduleDoc, symbol, symbol.valueDeclaration, aliasSymbol);
this.docType = 'class';
this.statics = [];
this.isAbstract = this.declaration.modifiers && this.declaration.modifiers.some(modifier => modifier.kind === typescript_1.SyntaxKind.AbstractKeyword);
if (symbol.exports) {
this.statics = this.getMemberDocs(symbol.exports, moduleDoc.hidePrivateMembers);
}
if (symbol.members) {
// Get the constructor
const constructorSymbol = symbol.members.get(typescript_1.InternalSymbolName.Constructor);
if (constructorSymbol && constructorSymbol.getFlags() & typescript_1.SymbolFlags.Constructor) {
this.constructorDoc = this.getConstructorDoc(constructorSymbol);
}
// Get the instance members
this.members = this.getMemberDocs(symbol.members, moduleDoc.hidePrivateMembers);
}
}
getConstructorDoc(constructorSymbol) {
let constructorDoc = null;
const overloads = [];
constructorSymbol.getDeclarations().forEach(declaration => {
if (declaration.body) {
// This is the "real" declaration of the method
constructorDoc = new MethodMemberDoc_1.MethodMemberDoc(this.host, this, constructorSymbol, declaration, overloads);
}
else {
// This is an overload signature of the method
overloads.push(new MethodMemberDoc_1.MethodMemberDoc(this.host, this, constructorSymbol, declaration, overloads));
}
});
return constructorDoc || overloads.shift();
}
}
exports.ClassExportDoc = ClassExportDoc;
//# sourceMappingURL=ClassExportDoc.js.map