Skip to content

Instantly share code, notes, and snippets.

@rajitha1998
Last active August 19, 2020 03:52
Show Gist options
  • Save rajitha1998/014bf9c232719b4858ea15a677d3e782 to your computer and use it in GitHub Desktop.
Save rajitha1998/014bf9c232719b4858ea15a677d3e782 to your computer and use it in GitHub Desktop.
const addComments = <T extends ts.Node>(
context: ts.TransformationContext
) => (rootNode: T) => {
let count = 0;
function visit(node: ts.Node): ts.Node {
if (ts.isClassDeclaration(node)) {
addMultiLineComment(
node,
"This is an auto generated class, please do not change."
);
const comment = `*
* Class to create a ${classData.functions[0].pkgName} object
* @category Google Cloud
`;
addMultiLineComment(node, comment);
}
if (ts.isMethodDeclaration(node)) {
let parameters = classData.functions[count].params.map(param => {
let statment;
if (param.optional) {
statment = `* @param {${param.type}} [${param.name}] - Data required for ${classData.functions[count].SDKFunctionName}`;
} else {
statment = `* @param {${param.type}} ${param.name} - Data required for ${classData.functions[count].SDKFunctionName}`;
}
return statment;
});
let comment;
if (parameters.length > 0) {
let paramStatments: string = "";
parameters.map(param => {
paramStatments = paramStatments.concat(
paramStatments === "" ? `${param}` : `\n ${param}`
);
});
comment = `*
* Trigers the ${classData.functions[count].SDKFunctionName} function of ${
classData.functions[0].pkgName.split("-")[1]
}
${paramStatments}
* @returns {Promise<${classData.functions[count].SDKFunctionName}Response>}
`;
} else {
comment = `*
* Trigers the ${classData.functions[count].SDKFunctionName} function of ${
classData.functions[0].pkgName.split("-")[1]
}
* @returns {Promise<${classData.functions[count].SDKFunctionName}Response>}
`;
}
addMultiLineComment(node, comment);
count++;
}
return ts.visitEachChild(node, visit, context);
}
return ts.visitNode(rootNode, visit);
};
function addMultiLineComment(node, comment: string) {
ts.addSyntheticLeadingComment(
node,
ts.SyntaxKind.MultiLineCommentTrivia,
comment,
true
);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment