Last active
August 19, 2020 03:52
-
-
Save rajitha1998/014bf9c232719b4858ea15a677d3e782 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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