/** * Wenn die Bibliothek zur Erweiterung der IDE eingebunden (`ide-lib.js`) wurde, * steht diese globale Variable mit Zugang zur öffentlichen Schnittstelle * zur Verfügung. */ declare const MC: MathCoach.Api; /** * Der MathCoach-Namensraum ist die Sammelstelle für alle öffentlichen Schnittstellen. * Somit können auch externe Module (z.B. grafische Editoren) typsicher erstellt werden. * Als Einstiegspunkt dient das interface `MathCoach.Api` - eine Implementierung dieser Schnittstelle * wird von der IDE (siehe `ide-lib.js`) bereitgestellt und kann über die globale Variable * `MC` zugegriffen werden. */ declare namespace MathCoach { /** * Einstiegspunkt zur MathCoach API Schnittstelle */ interface Api { /** * Die Schnittstelle zur Entwicklungsumgebung (IDE) von MathCoach */ readonly ide: IdeApi; } /** * Schnittstelle zur IDE von MathCoach */ interface IdeApi { /** * Name des aktuellen Benutzers */ getUserName(): Promise; /** * Verweis auf die Datei, mit dem das Entwicklerwerkzeug gestartet wurde. */ getContextFile(): Promise; /** * Schnittstelle zum Dateisystem */ readonly fs: FileSystemApi; /** * Schnittstelle zur Navigations-Vorschau */ readonly navigator: NavigatorApi; } /** * Schnittstelle zur Navigations-Vorschau */ interface NavigatorApi { /** * Navigiert die Vorschau zu einem Link. * @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; } /** * Schnittstelle zum Dateisystem */ interface FileSystemApi { /** * Liest eine Datei * * @param file Verweis auf die Datei */ readFile(file: File): Promise; /** * Schreibt Text in eine Datei. * * @param file Verweis auf die Datei * @param text Der neue Inhalt der Datei */ writeFile(file: File, text: string): Promise; } /** * Eindeutiger Verweis auf eine Datei */ interface File { /** * Name des Besitzers. Hinweis: Der Besitzter kann vom angemeldeten * Benutzer abweichen (z.B. wenn das Teilen von Inhalten zukünftig unterstützt wird) */ owner: string; /** * Liegt die Datei im öffentlichen (www) oder verborgenen (vfs) Dateisystem? */ part: "vfs" | "www"; /** * Absoluter Pfad zur Datei. Mmuss immer mit einem Slash beginnen. */ path: string; } }