@ng-doc/builder
Version:
<!-- PROJECT LOGO --> <br /> <div align="center"> <a href="https://github.com/ng-doc/ng-doc"> <img src="https://ng-doc.com/assets/images/ng-doc.svg?raw=true" alt="Logo" height="150px"> </a>
182 lines • 5.67 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.constructorPresentation = constructorPresentation;
exports.accessorPresentation = accessorPresentation;
exports.methodPresentation = methodPresentation;
exports.callSignaturePresentation = callSignaturePresentation;
exports.functionPresentation = functionPresentation;
exports.typeAliasPresentation = typeAliasPresentation;
exports.variablePresentation = variablePresentation;
const core_1 = require("@ng-doc/core");
const ts_morph_1 = require("ts-morph");
const format_code_1 = require("./format-code");
const typescript_1 = require("./typescript");
/**
*
* @param constructor
*/
function constructorPresentation(constructor) {
const parameters = constructor.getParameters().map(parameterPresentation).join(', \n ');
const presentation = [
scopePresentation(constructor),
`constructor(\n ${parameters}\n):`,
(0, typescript_1.displayReturnType)(constructor),
]
.filter(core_1.isPresent)
.join(' ') + ';';
return (0, format_code_1.formatCode)(presentation, 'TypeScript');
}
/**
*
* @param accessor
*/
function accessorPresentation(accessor) {
const parameters = accessor.getParameters().map(parameterPresentation).join(', ');
const prefix = ts_morph_1.Node.isGetAccessorDeclaration(accessor) ? 'get' : 'set';
const header = ts_morph_1.Node.isGetAccessorDeclaration(accessor)
? `${accessor.getName()}():`
: `${accessor.getName()}(${parameters})`;
const returnType = ts_morph_1.Node.isGetAccessorDeclaration(accessor)
? (0, typescript_1.displayReturnType)(accessor)
: '';
const presentation = [staticPresentation(accessor), scopePresentation(accessor), prefix, header, returnType]
.filter(core_1.isPresent)
.join(' ') + ';';
return (0, format_code_1.formatCode)(presentation, 'TypeScript');
}
/**
*
* @param method
*/
function methodPresentation(method) {
const parameters = method.getParameters().map(parameterPresentation).join(', ');
const presentation = [
memberModifiers(method),
staticPresentation(method),
scopePresentation(method),
`${method.getName()}(${parameters}):`,
`${(0, typescript_1.displayReturnType)(method)};`,
]
.filter(core_1.isPresent)
.join(' ');
return (0, format_code_1.formatCode)(presentation, 'TypeScript');
}
/**
*
* @param callSignature
*/
function callSignaturePresentation(callSignature) {
const parameters = callSignature.getParameters().map(parameterPresentation).join(', ');
const typeParameters = typeParametersPresentation(callSignature.getTypeParameters());
const presentation = [
`${typeParameters ? `<${typeParameters}>` : ''}(${parameters}):`,
`${(0, typescript_1.displayReturnType)(callSignature)};`,
]
.filter(core_1.isPresent)
.join(' ');
return (0, format_code_1.formatCode)(presentation, 'TypeScript');
}
/**
*
* @param fnc
*/
function functionPresentation(fnc) {
const parameters = fnc.getParameters().map(parameterPresentation).join(', ');
const presentation = [
'function',
`${fnc.getName()}(${parameters}):`,
`${(0, typescript_1.displayReturnType)(fnc)};`,
]
.filter(core_1.isPresent)
.join(' ');
return (0, format_code_1.formatCode)(presentation, 'TypeScript');
}
/**
*
* @param typeAlias
*/
function typeAliasPresentation(typeAlias) {
const presentation = `type ${typeAlias.getName()} = ${(0, typescript_1.displayType)(typeAlias)};`;
return (0, format_code_1.formatCode)(presentation, 'TypeScript');
}
/**
*
* @param variable
*/
function variablePresentation(variable) {
const presentation = [
variable.getVariableStatement()?.getDeclarationKind() ?? 'const',
`${variable.getName()}:`,
`${(0, typescript_1.displayType)(variable)};`,
]
.filter(core_1.isPresent)
.join(' ');
return (0, format_code_1.formatCode)(presentation, 'TypeScript');
}
/**
*
* @param parameter
*/
function parameterPresentation(parameter) {
return [
decoratorsPresentation(parameter),
scopePresentation(parameter),
modPresentation(parameter),
parameter.getName() + (parameter.hasQuestionToken() ? '?' : '') + ':',
(0, typescript_1.displayType)(parameter),
parameter.getInitializer() ? `= ${parameter.getInitializer()?.getText() ?? ''}` : '',
]
.filter(core_1.isPresent)
.join(' ');
}
/**
*
* @param node
*/
function scopePresentation(node) {
return (node.getScope && node.getScope()?.replace(ts_morph_1.Scope.Public, '')) ?? '';
}
/**
*
* @param node
*/
function staticPresentation(node) {
return ts_morph_1.Node.isStaticable(node) && node.isStatic() ? 'static' : '';
}
/**
*
* @param member
*/
function memberModifiers(member) {
return [
(ts_morph_1.Node.isAbstractable(member) && member.isAbstract() && 'abstract') || '',
(ts_morph_1.Node.isAsyncable(member) && member.isAsync() && 'async') || '',
]
.filter(core_1.isPresent)
.join(' ');
}
/**
*
* @param node
*/
function modPresentation(node) {
return (node.isReadonly && node.isReadonly() && 'readonly') || '';
}
/**
*
* @param node
*/
function decoratorsPresentation(node) {
return node
.getDecorators()
.map((d) => `@${d.getName()}()`)
.join(' ');
}
/**
*
* @param typeParameters
*/
function typeParametersPresentation(typeParameters) {
return typeParameters.map((tp) => tp.getText()).join(', ');
}
//# sourceMappingURL=presentation.js.map
;