jsteuer
2019-07-05 57e68857a69e20adffb6e35e13754358eb1e31ea
mathcoach-api.d.ts
@@ -20,9 +20,33 @@
     */
    interface Api {
        /**
         * Die Schnittstelle zur Entwicklungsumgebung (IDE) von MathCoach
         * Die Schnittstelle zur Entwicklungsumgebung (IDE) von MathCoach.
         */
        readonly ide: IdeApi;
        /**
         * Prüft, ob die API einsatzbereit ist. Dies sollte einmalig, beim Start des Werkzeugs,
         * geprüft werden. Dabei bedeutet der Rückgabewert `true`, dass das Werkzeug durch
         * die IDE gestartet wurde und die Kommunikation möglich ist. `false` bedeutet, dass
         * das Werkzeug nicht durch die IDE gestartet wurde.
         *
         * Somit wäre es möglich ein Tool offlinefähig zu machen, indem es ggf. eine eigene
         * Implementierung der MathCoach-API (beispielsweise unter Verwendung des LocalStorage
         * zum Speichern von Dateien) verwendet.
         *
         * Anwendungsbeispiel (Prüft zusätzlich, ob die globale `MC`-Variable verfügbar ist - also
         * die `ide-lib.js` korrekt eingebunden und geladen wurde):
         *
         *      let isReady = (typeof MC !== "undefined") ? await MC.isReady() : false;
         *      if(isReady){
         *          // MathCoach-API is ready to use!
         *      }else{
         *          // MathCoach-API is not ready...
         *      }
         *
         *
         */
        isReady(): Promise<boolean>;
    }
@@ -31,11 +55,21 @@
    */
    interface IdeApi {
        /**
         * Name des aktuellen Benutzers
         * Name des aktuellen Benutzers.
         *
         * Anwendungsbeisipiel:
         *
         *      let user = await MC.ide.getUserName();
         *
         */
        getUserName(): Promise<string>;
        /**
         * Verweis auf die Datei, mit dem das Entwicklerwerkzeug gestartet wurde.
         * Verweis auf die Datei, mit der das Entwicklerwerkzeug gestartet wurde.
         *
         * Anwendungsbeispiel:
         *
         *      let file = await MC.ide.getContextFile();
         *      let { owner, path, part } = file;
         */
        getContextFile(): Promise<File>;
        /**
@@ -43,7 +77,7 @@
         */
        readonly fs: FileSystemApi;
        /**
         * Schnittstelle zur Navigations-Vorschau
         * Schnittstelle zur Vorschau
         */
        readonly navigator: NavigatorApi;
    }
@@ -53,17 +87,43 @@
    interface NavigatorApi {
        /**
         * Navigiert die Vorschau zu einem Link.
         *
         * Anwendungsbeispiel:
         *
         *      await MC.ide.navigator.navigateTo("/mathcoach/www/yourName/readme.html", true)
         *
         *
         * @param link Web URL (z.B. zu einer Datei im WWW-Verzeichnis oder einer MathCoach-Aufgabe)
         * @param forceOpen `true` um das Anzeigen der Vorschau zu erzwingen, `false` um nur bei bereits geöffneter Vorschau zu navigieren.
         */
        navigateTo(link: string, forceOpen?: boolean): Promise<void>;
        /**
         * Navigiert die Vorschau zu einer MathCoach-Aufgabe.
         * Hinweis: Die Datei muss im `vfs`-Teil des Dateisystems liegen und
         * eine ausführbar sein (z.B. eine groovy-Datei).
         *
         * Anwendungsbeispiel:
         *
         *      let file = { part: "vfs", owner:"yourName", path: "/myExercise.groovy" }
         *      await MC.ide.navigator.navigateToExercise(file)
         *
         * @param file Datei-Verweis
         */
        navigateToExercise(file: MathCoach.File, forceOpen?: boolean): Promise<void>
    }
    /**
     * Schnittstelle zum Dateisystem
     */
    interface FileSystemApi {
        /**
         * Liest eine Datei
         * Liest eine Datei und gibt den Textinhalt zurück.
         *
         * Anwendungsbeispiel: Lesen der Datei, mit dem das Werkzeug gestartet wurde
         *
         *      let file = await MC.ide.getContextFile();
         *      let text = await MC.ide.fs.readFile(file);
         *      // do something with the text, e.g. JSON.parse(text)
         * 
         * @param file Verweis auf die Datei
         */
@@ -71,13 +131,27 @@
        /**
         * Schreibt Text in eine Datei. 
         * 
         * Anwendungsbeispiel: Schreiben der Datei, mit dem das Werkzeug gestartet wurde
         *
         *      let file = await MC.ide.getContextFile(); // some file reference
         *      let text = "some text"; // or JSON.stringify(yourDataContainer)
         *      await MC.ide.fs.writeFile(file,text);
         *
         * @param file Verweis auf die Datei
         * @param text Der neue Inhalt der Datei
         */
        writeFile(file: File, text: string): Promise<void>;
    }
    /**
     * Eindeutiger Verweis auf eine Datei
     * Eindeutiger Verweis auf eine Datei.
     *
     * Anwendungsbeispiel:
     *
     *      let user = await MC.ide.getUserName(); // oder von einem anderen File-Objekt abgfragen...
     *      let file = { owner: user, part: "vfs", path:"/myExercise.groovy" }
     *
     * Siehe auch: `MC.ide.getContextFile()`
     *
     */
    interface File {
        /**