summaryrefslogtreecommitdiffstats
path: root/src/CodeParser
diff options
context:
space:
mode:
authorRowan Goemans <RB.Goemans@student.han.nl>2017-10-14 22:29:02 +0200
committerRowan Goemans <RB.Goemans@student.han.nl>2017-10-14 22:29:02 +0200
commit0ebfa5bd12e529d8febe73c85d3bf48c4d4997e8 (patch)
tree30f7d859a9270b4c70d366a93571054295b4e070 /src/CodeParser
parent140229888a0e4a120c11ecaae81132d07cc69e5b (diff)
downloaddoxdocgen-0ebfa5bd12e529d8febe73c85d3bf48c4d4997e8.tar.gz
-- Added extensive templating the be able to generated different types of doxygen comment.
Diffstat (limited to 'src/CodeParser')
-rw-r--r--src/CodeParser/CParser.ts19
-rw-r--r--src/CodeParser/CodeParserController.ts31
2 files changed, 26 insertions, 24 deletions
diff --git a/src/CodeParser/CParser.ts b/src/CodeParser/CParser.ts
index 4889de6..12ed169 100644
--- a/src/CodeParser/CParser.ts
+++ b/src/CodeParser/CParser.ts
@@ -35,8 +35,9 @@ export default class CParser implements ICodeParser {
const returnValue: string[] = this.getReturn(method);
const params: string[] = this.getParams(method);
+ const tparams: string[] = this.getTemplateParams(method);
- const cppGenerator: IDocGen = new Generator(this.activeEditor, this.activeSelection, params, returnValue);
+ const cppGenerator: IDocGen = new Generator(this.activeEditor, this.activeSelection, params, tparams, returnValue);
return cppGenerator;
}
@@ -84,7 +85,7 @@ export default class CParser implements ICodeParser {
const retVals: string[] = [];
// Remove the compiler keywords from the signature
- const sign: string = method.replace(/(static)|(inline)|(friend)|(virtual)|(extern)|(explicit)/g, "");
+ const sign: string = method.replace(/(static)|(inline)|(friend)|(virtual)|(extern)|(explicit)|(const)/g, "");
// Remove the parameters from the signature
const returnSignature = sign.slice(0, sign.indexOf("(")).trim();
@@ -106,14 +107,6 @@ export default class CParser implements ICodeParser {
break;
}
- // Don't generate return type if the user doesn't wish to do it
- if (!workspace.getConfiguration(ConfigType.generic).get<boolean>(Config.generateReturnType, true) &&
- retVals.length > 0) {
- retVals.length = 0;
- retVals.push(" ");
- return retVals;
- }
-
return retVals;
}
@@ -139,4 +132,10 @@ export default class CParser implements ICodeParser {
return paramArr;
}
+
+ protected getTemplateParams(method: string): string[] {
+ // Todo implement parsing of template parameters.
+ const tparams: string[] = [];
+ return tparams;
+ }
}
diff --git a/src/CodeParser/CodeParserController.ts b/src/CodeParser/CodeParserController.ts
index 49d4082..0a80e77 100644
--- a/src/CodeParser/CodeParserController.ts
+++ b/src/CodeParser/CodeParserController.ts
@@ -1,4 +1,4 @@
-import { Disposable, Position, TextDocumentContentChangeEvent, TextEditor, TextLine, window, workspace } from "vscode";
+import { Disposable, Position, Range, TextDocumentContentChangeEvent, TextEditor, TextLine, window, workspace } from "vscode";
import { Config, ConfigType } from "../Config";
import CodeParser from "./CodeParser";
import CParser from "./CParser";
@@ -13,7 +13,7 @@ import CppParser from "./CppParser";
*/
export default class CodeParserController {
private disposable: Disposable;
- private indicators: string[] = [];
+ private triggerSequence: string;
/**
* Creates an instance of CodeParserController
@@ -51,8 +51,7 @@ export default class CodeParserController {
***************************************************************************/
private readConfig() {
- this.indicators.pop();
- this.indicators.push(workspace.getConfiguration(ConfigType.generic).get<string>(Config.commentStart, "/**"));
+ this.triggerSequence = workspace.getConfiguration(ConfigType.generic).get<string>(Config.triggerSequence, "/**");
}
private check(activeEditor: TextEditor, event: TextDocumentContentChangeEvent): boolean {
@@ -64,7 +63,7 @@ export default class CodeParserController {
const activeChar: string = activeLine.text.charAt(activeSelection.character);
const startsWith: boolean = event.text.startsWith("\n") || event.text.startsWith("\r\n");
- // Check if enter was pressed. Note the !
+ // Check if enter was pressed. Note the !
if (!((activeChar === "") && startsWith)) {
return false;
}
@@ -72,14 +71,7 @@ export default class CodeParserController {
const cont: string = activeLine.text.trim();
let found: boolean = false;
- this.indicators.forEach((element: string) => {
- if (element === cont) { // Compare the content from the line with the valid indicators
- found = true;
- return;
- }
- });
-
- return found;
+ return this.triggerSequence === cont;
}
private onEvent(activeEditor: TextEditor, event: TextDocumentContentChangeEvent) {
@@ -102,6 +94,17 @@ export default class CodeParserController {
console.log("No comments can be generated for language: " + lang);
return null;
}
- parser.Parse(activeEditor, event).GenerateDoc();
+
+ const currentPos: Position = window.activeTextEditor.selection.active;
+ const startReplace: Position = new Position(currentPos.line, currentPos.character - this.triggerSequence.length);
+
+ let endReplace: Position = new Position(currentPos.line, currentPos.character);
+ const nextLineText: String = window.activeTextEditor.document.lineAt(endReplace.line + 1).text;
+ // VSCode may enter a * on itself, we don't want that in our comment.
+ if (nextLineText.trim() === "*") {
+ endReplace = new Position(currentPos.line + 1, nextLineText.length);
+ }
+
+ parser.Parse(activeEditor, event).GenerateDoc(new Range(startReplace, endReplace));
}
}