From 31f6517aa5d8d3ccdd0b39880337c000943d08c1 Mon Sep 17 00:00:00 2001 From: Rowan Goemans Date: Sun, 31 Dec 2017 04:07:55 +0100 Subject: -- Completed unit tests for operators. Conversion operators aren't working yet. -- Renamed all C things to Cpp since that is really what they are. -- Made empty files for the remaining unit tests. --- src/Lang/C/CDocGen.ts | 178 -------------------------------------------------- 1 file changed, 178 deletions(-) delete mode 100644 src/Lang/C/CDocGen.ts (limited to 'src/Lang/C/CDocGen.ts') diff --git a/src/Lang/C/CDocGen.ts b/src/Lang/C/CDocGen.ts deleted file mode 100644 index 5488020..0000000 --- a/src/Lang/C/CDocGen.ts +++ /dev/null @@ -1,178 +0,0 @@ -import { Position, Range, Selection, TextEditor, TextLine, WorkspaceEdit } from "vscode"; -import { IDocGen } from "../../Common/IDocGen"; -import { Config } from "../../Config"; -import { CArgument } from "./CArgument"; -import { CParseTree } from "./CParseTree"; -import { CToken, CTokenType } from "./CToken"; - -export default class CDocGen implements IDocGen { - protected activeEditor: TextEditor; - - protected readonly cfg: Config; - - protected func: CArgument; - protected templateParams: string[]; - protected params: CArgument[]; - - /** - * @param {TextEditor} actEdit Active editor window - * @param {Position} cursorPosition Where the cursor of the user currently is - * @param {string[]} templateParams The template parameters of the declaration. - * @param {CArgument} func The type and name of the function to generate doxygen. - * Doesn't contain anything if it is not a function. - * @param {CArgument[]} params The parameters of the function. Doesn't contain anything if it is not a function. - */ - public constructor( - actEdit: TextEditor, - cursorPosition: Position, - cfg: Config, - templateParams: string[], - func: CArgument, - params: CArgument[], - ) { - this.activeEditor = actEdit; - this.cfg = cfg; - this.func = func; - this.templateParams = templateParams; - this.params = params; - } - - /** - * @inheritdoc - */ - public GenerateDoc(rangeToReplace: Range) { - const comment: string = this.generateComment(); - - this.activeEditor.edit((editBuilder) => { - editBuilder.replace(rangeToReplace, comment); // Insert the comment - }); - - // Set cursor to first DoxyGen command. - this.moveCursurToFirstDoxyCommand(comment, rangeToReplace.start.line, rangeToReplace.start.character); - } - - /*************************************************************************** - Implementation - ***************************************************************************/ - protected getIndentation(): string { - const line: TextLine = this.activeEditor.document.lineAt(this.activeEditor.selection.start.line); - return line.text.slice(0, line.firstNonWhitespaceCharacterIndex - 1); - } - - protected getTemplatedString(replace: string, template: string, param: string): string { - return template.replace(replace, param); - } - - protected generateBrief(lines: string[]) { - lines.push(this.cfg.commentPrefix + this.cfg.briefTemplate); - } - - protected generateFromTemplate(lines: string[], replace: string, template: string, templateWith: string[]) { - let line: string = ""; - - templateWith.forEach((element: string) => { - // Ignore null values - if (element !== null) { - line = this.cfg.commentPrefix; - line += this.getTemplatedString(replace, template, element); - lines.push(line); - } - }); - } - - protected generateReturnParams(): string[] { - const params: string[] = []; - - // Check if return type is a pointer - const ptrReturnIndex = this.func.type.nodes - .findIndex((n) => n instanceof CToken && n.type === CTokenType.Pointer); - - // Special case for void functions. - const voidReturnIndex = this.func.type.nodes - .findIndex((n) => n instanceof CToken && n.type === CTokenType.Symbol && n.value === "void"); - - // Special case for bool return type. - const boolReturnIndex: number = this.func.type.nodes - .findIndex((n) => n instanceof CToken && n.type === CTokenType.Symbol && n.value === "bool"); - - if (boolReturnIndex !== -1 && this.cfg.boolReturnsTrueFalse === true) { - params.push("true"); - params.push("false"); - } else if (voidReturnIndex !== -1 && ptrReturnIndex !== -1) { - params.push(this.cfg.includeTypeAtReturn === true ? this.func.type.Yield() : ""); - } else if (voidReturnIndex === -1 && this.func.type.nodes.length > 0) { - params.push(this.cfg.includeTypeAtReturn === true ? this.func.type.Yield() : ""); - } - - return params; - } - - protected generateComment(): string { - const lines: string[] = []; - - if (this.cfg.firstLine.trim().length !== 0) { - lines.push(this.cfg.firstLine); - } - - if (this.cfg.briefTemplate.trim().length !== 0) { - this.generateBrief(lines); - if (this.cfg.newLineAfterBrief === true) { - lines.push(this.cfg.commentPrefix); - } - } - - if (this.cfg.tparamTemplate.trim().length !== 0 && this.templateParams.length > 0) { - this.generateFromTemplate( - lines, - this.cfg.paramTemplateReplace, - this.cfg.tparamTemplate, - this.templateParams, - ); - if (this.cfg.newLineAfterTParams === true) { - lines.push(this.cfg.commentPrefix); - } - } - - if (this.cfg.paramTemplate.trim().length !== 0 && this.params.length > 0) { - const paramNames: string[] = this.params.map((p) => p.name); - this.generateFromTemplate(lines, this.cfg.paramTemplateReplace, this.cfg.paramTemplate, paramNames); - if (this.cfg.newLineAfterParams === true) { - lines.push(this.cfg.commentPrefix); - } - } - - if (this.cfg.returnTemplate.trim().length !== 0 && this.func.type !== null) { - const returnParams = this.generateReturnParams(); - this.generateFromTemplate(lines, this.cfg.typeTemplateReplace, this.cfg.returnTemplate, returnParams); - } - - if (this.cfg.lastLine.trim().length !== 0) { - lines.push(this.cfg.lastLine); - } - - const comment: string = lines.join("\n" + this.getIndentation()); - return comment; - } - - protected moveCursurToFirstDoxyCommand(comment: string, baseLine: number, baseCharacter) { - // Find first offset of a new line in the comment. Since that's when the line where the first param starts. - let line: number = baseLine; - let character: number = comment.indexOf("\n"); - - // If a first line is included find the 2nd line with a newline. - if (this.cfg.firstLine.trim().length !== 0) { - line++; - const oldCharacter: number = character; - character = comment.indexOf("\n", oldCharacter + 1) - oldCharacter; - } - - // If newline is not found means no first param was found so Set to base line before the newline. - if (character < 0) { - line = baseLine; - character = baseCharacter; - } - - const moveTo: Position = new Position(line, character); - this.activeEditor.selection = new Selection(moveTo, moveTo); - } -} -- cgit v1.2.3