diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Config.ts | 5 | ||||
| -rw-r--r-- | src/Lang/Cpp/CppDocGen.ts | 42 | ||||
| -rw-r--r-- | src/Lang/Cpp/CppParser.ts | 34 |
3 files changed, 67 insertions, 14 deletions
diff --git a/src/Config.ts b/src/Config.ts index 3a98a71..9b86fc8 100644 --- a/src/Config.ts +++ b/src/Config.ts @@ -20,12 +20,15 @@ export class Config { values.tparamTemplate = cfg.get<string>("tparamTemplate", values.tparamTemplate); values.returnTemplate = cfg.get<string>("returnTemplate", values.returnTemplate); values.linesToGet = cfg.get<number>("linesToGet", values.linesToGet); + values.authorTag = cfg.get<string>("authorTag", values.authorTag); + values.fileTemplate = cfg.get<string>("fileTemplate", values.fileTemplate); return values; } public readonly paramTemplateReplace: string = "{param}"; public readonly typeTemplateReplace: string = "{type}"; + public readonly nameTemplateReplace: string = "{name}"; public triggerSequence: string = "/**"; public firstLine: string = "/**"; @@ -41,4 +44,6 @@ export class Config { public tparamTemplate: string = "@tparam {param} "; public returnTemplate: string = "@return {type} "; public linesToGet: number = 20; + public authorTag: string = "@author your name"; + public fileTemplate: string = "@file {name}"; } diff --git a/src/Lang/Cpp/CppDocGen.ts b/src/Lang/Cpp/CppDocGen.ts index b98abea..83803cd 100644 --- a/src/Lang/Cpp/CppDocGen.ts +++ b/src/Lang/Cpp/CppDocGen.ts @@ -32,8 +32,8 @@ export default class CppDocGen implements IDocGen { ) { this.activeEditor = actEdit; this.cfg = cfg; - this.func = func; this.templateParams = templateParams; + this.func = func; this.params = params; } @@ -41,7 +41,12 @@ export default class CppDocGen implements IDocGen { * @inheritdoc */ public GenerateDoc(rangeToReplace: Range) { - const comment: string = this.generateComment(); + let comment: string; + if (this.func.name === "#include") { + comment = this.generateFileDescription(); + } else { + comment = this.generateComment(); + } this.activeEditor.edit((editBuilder) => { editBuilder.replace(rangeToReplace, comment); // Insert the comment @@ -110,6 +115,39 @@ export default class CppDocGen implements IDocGen { return params; } + protected generateFileDescription(): 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); + } + } + + lines.push(this.cfg.commentPrefix + this.cfg.authorTag); + + this.generateFromTemplate( + lines, + this.cfg.nameTemplateReplace, + this.cfg.fileTemplate, + [this.activeEditor.document.fileName.replace(/^.*[\\\/]/, "")], + ); + + // todo add date to file creation + // lines.push(new Date().toLocaleDateString()); + + if (this.cfg.lastLine.trim().length !== 0) { + lines.push(this.cfg.lastLine); + } + + return lines.join("\n"); + } + protected generateComment(): string { const lines: string[] = []; diff --git a/src/Lang/Cpp/CppParser.ts b/src/Lang/Cpp/CppParser.ts index 4792e14..46f22e3 100644 --- a/src/Lang/Cpp/CppParser.ts +++ b/src/Lang/Cpp/CppParser.ts @@ -227,22 +227,27 @@ export default class CppParser implements ICodeParser { } catch (err) { // console.dir(err); } - - // template parsing is simpler by using heuristics rather then CppTokenizing first. const templateArgs: string[] = []; - while (line.startsWith("template")) { - const template: string = this.GetTemplate(line); + let args: [CppArgument, CppArgument[]] = [new CppArgument(), []]; - templateArgs.push.apply(templateArgs, this.GetArgsFromTemplate(template)); + if (line === "#include" || + (activeEdit.selection.active.line === 0 && line.length === 0)) { // head of file + args[0].name = "#include"; + } else { // method + // template parsing is simpler by using heuristics rather then CppTokenizing first. + while (line.startsWith("template")) { + const template: string = this.GetTemplate(line); - line = line.slice(template.length, line.length + 1).trim(); - } + templateArgs.push.apply(templateArgs, this.GetArgsFromTemplate(template)); - let args: [CppArgument, CppArgument[]] = [new CppArgument(), []]; - try { - args = this.GetReturnAndArgs(line); - } catch (err) { - // console.dir(err); + line = line.slice(template.length, line.length + 1).trim(); + } + + try { + args = this.GetReturnAndArgs(line); + } catch (err) { + // console.dir(err); + } } return new CppDocGen( @@ -298,6 +303,11 @@ export default class CppParser implements ICodeParser { } } + // Head of file probably + if (nextLineTxt.startsWith("#include")) { + return "#include"; + } + logicalLine += "\n" + nextLineTxt; } |