summaryrefslogtreecommitdiffstats
path: root/src/CodeParser/CodeParserController.ts
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/CodeParserController.ts
parent140229888a0e4a120c11ecaae81132d07cc69e5b (diff)
downloaddoxdocgen-0ebfa5bd12e529d8febe73c85d3bf48c4d4997e8.tar.gz
-- Added extensive templating the be able to generated different types of doxygen comment.
Diffstat (limited to 'src/CodeParser/CodeParserController.ts')
-rw-r--r--src/CodeParser/CodeParserController.ts31
1 files changed, 17 insertions, 14 deletions
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));
}
}