summaryrefslogtreecommitdiffstats
path: root/src/CodeParser/CodeParserController.ts
diff options
context:
space:
mode:
authorRowan Goemans <RB.Goemans@student.han.nl>2017-12-31 02:03:08 +0100
committerChristoph Schlosser <christophschlosser@users.noreply.github.com>2018-02-20 22:02:22 +0100
commit1746f21bc3720585d2fe877db8d69aae301ff02c (patch)
tree7f0d081fd8fc3e0b54c7bb478cb8724a4cf3b798 /src/CodeParser/CodeParserController.ts
parentb446b9e596fc0487b88597d8e818dae61512f309 (diff)
downloaddoxdocgen-1746f21bc3720585d2fe877db8d69aae301ff02c.tar.gz
-- Added many unit tests for the C parser. Almost complete now
-- Refactored project structure to allow for more overview once we add more languages. -- Renamed a lot of types in the CParser to be more explicit. -- Made configuration injectable into the classes that need them. This allows to unit test configuration variables. -- Added 2 new config params that allows to customize what gets returned for a bool return type. -- Small changes to the logic to make it more concise.
Diffstat (limited to 'src/CodeParser/CodeParserController.ts')
-rw-r--r--src/CodeParser/CodeParserController.ts119
1 files changed, 0 insertions, 119 deletions
diff --git a/src/CodeParser/CodeParserController.ts b/src/CodeParser/CodeParserController.ts
deleted file mode 100644
index 7eae9c0..0000000
--- a/src/CodeParser/CodeParserController.ts
+++ /dev/null
@@ -1,119 +0,0 @@
-import {
- Disposable,
- Position,
- Range,
- TextDocumentContentChangeEvent,
- TextEditor,
- TextLine,
- window,
- workspace,
-} from "vscode";
-import { Config, ConfigType } from "../Config";
-import CodeParser from "./CodeParser";
-import CParser from "./CParser/CParser";
-import CppParser from "./CParser/CppParser";
-
-/**
- *
- * Checks if the event matches the specified guidelines and if a parser exists for this language
- *
- * @export
- * @class CodeParserController
- */
-export default class CodeParserController {
- private disposable: Disposable;
- private triggerSequence: string;
-
- /**
- * Creates an instance of CodeParserController
- *
- * @memberOf CodeParserController
- */
- public constructor() {
- const subscriptions: Disposable[] = [];
-
- // Hand off the event to the parser if a valid parser is found
- workspace.onDidChangeTextDocument((event) => {
- const activeEditor: TextEditor = window.activeTextEditor;
- if (activeEditor && event.document === activeEditor.document) {
- this.readConfig();
-
- this.onEvent(activeEditor, event.contentChanges[0]);
- }
- }, this, subscriptions);
-
- this.disposable = Disposable.from(...subscriptions);
- }
-
- /**
- *
- * Disposes of the subscriptions
- *
- * @memberOf CodeParserController
- */
- public dispose() {
- this.disposable.dispose();
- }
-
- /***************************************************************************
- Implementation
- ***************************************************************************/
-
- private readConfig() {
- this.triggerSequence = workspace
- .getConfiguration(ConfigType.generic)
- .get<string>(Config.triggerSequence, "/**");
- }
-
- private check(activeEditor: TextEditor, event: TextDocumentContentChangeEvent): boolean {
- if (activeEditor == null || event.text == null) {
- return false;
- }
- const activeSelection: Position = activeEditor.selection.active;
- const activeLine: TextLine = activeEditor.document.lineAt(activeSelection.line);
- 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 !
- if (!((activeChar === "") && startsWith)) {
- return false;
- }
-
- const cont: string = activeLine.text.trim();
-
- return this.triggerSequence === cont;
- }
-
- private onEvent(activeEditor: TextEditor, event: TextDocumentContentChangeEvent) {
- if (!this.check(activeEditor, event)) {
- return null;
- }
-
- const lang: string = activeEditor.document.languageId;
- let parser: CodeParser;
-
- switch (lang) {
- case "c":
- parser = new CParser();
- break;
- case "cpp":
- parser = new CppParser();
- break;
- default:
- // tslint:disable-next-line:no-console
- console.log("No comments can be generated for language: " + lang);
- return null;
- }
-
- const currentPos: Position = window.activeTextEditor.selection.active;
- const startReplace: Position = new Position(
- currentPos.line,
- currentPos.character - this.triggerSequence.length,
- );
-
- const nextLineText: string = window.activeTextEditor.document.lineAt(startReplace.line + 1).text;
- const endReplace = new Position(currentPos.line + 1, nextLineText.length);
-
- parser.Parse(activeEditor).GenerateDoc(new Range(startReplace, endReplace));
- }
-}