diff options
| author | Christoph Schlosser <christoph@linux.com> | 2018-02-24 10:57:22 +0100 |
|---|---|---|
| committer | Christoph Schlosser <christophschlosser@users.noreply.github.com> | 2018-02-25 01:58:38 +0100 |
| commit | f928a1049c6582e2fbb044676c5bbca89d9b7e33 (patch) | |
| tree | bd8cf6d766c495a9a737e709167f62c02f59b02a /src/Lang/Cpp | |
| parent | d0b9d1868dc91aae5b79b414aaa51ab7100e2b60 (diff) | |
| download | doxdocgen-f928a1049c6582e2fbb044676c5bbca89d9b7e33.tar.gz | |
Generate description of file
Fix #51
Diffstat (limited to 'src/Lang/Cpp')
| -rw-r--r-- | src/Lang/Cpp/CppDocGen.ts | 42 | ||||
| -rw-r--r-- | src/Lang/Cpp/CppParser.ts | 34 |
2 files changed, 62 insertions, 14 deletions
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; } |