import { MathCoach } from "./MathCoach"; /** * Hilfsfunktionen für Werkzeug-Entwickler. Diese werden nicht durch die `ide-lib.js` * ausgeliefert! */ export declare namespace Helpers { /** * Bildet die MathCoach API nach, sodass diese auch Offline (ohne IDE) * verfügbar ist. (Siehe auch `createStorageBasedApi`). * * **Hinweis**: Wenn die echte MathCoach-API der IDE verfügbar ist, hat der Aufruf * dieser Funktion keinen Seiteneffekt. * * Anwendungsbeispiel * * import { Helpers } from "@mathcoach/ide-api"; * Helpers.enableOfflineUsageIfNecessary(); * MC.isReady() // use the api * * @param contextFileExtension Datei-Erweiterung der Kontext-Datei (Das Werkzeug soll * jedoch unabhängig von der Endung arbeiten können) * @returns Gibt `true` zurück, wenn die Offline-Funktionalität aktiviert * wurde, andernfalls `false` */ function enableOfflineUsageIfNecessary(contextFileExtension?: string): boolean; /** * Implementierung der MathCoach API zu Testzwecken. * * Das Dateisystem wird durch einen Storage implementiert. Einige Features der * IDE (beispielsweise der Navigator) sind nicht verfügbar und führen keine Aktionen * durch. Alle Aktionen werden in der Browser-Console geloggt. * * Anwendungsbeispiel * * import { Helpers } from "@mathcoach/ide-api"; * const _MC = Helpers.createStorageBasedApi(); * const contextFile = await _MC.ide.getContextFile() // use the api * * @param contextFileExtension Die Datei-Erweiterung der Kontext-Datei. Das Werkzeug sollte * unabhängig davon implementiert sein, da der Administrator der MathCoach IDE unter * Umständen auf eine Alternative ausweichen muss. * @param storage Storage-Implementierung, die zum Speichern von Dateien verwendet werden * soll. Standardmäßig wird der `LocalStorage` des Browsers verwendet * bzw. falls nicht verfügbar der `InMemoryStorage`. * */ function createStorageBasedApi(contextFileExtension?: string, storage?: Storage): MathCoach.Api; /** * Type Guard, der prüft, ob es sich um eine gültige `MathCoach.File`-Referenz handelt. * * @param maybeFile Ein beliebiges Objekt, das geprüft werden soll */ function isFile(maybeFile: any): maybeFile is MathCoach.File; /** * Bildet die Kontext-Datei auf eine Aufgaben-Datei mit selben Namen ab. * * Ein Werkzeug speichert sein Datenmodell in der sogenannten Kontext-Datei. Soll * eine MathCoach-Aufgabe generiert werden, ist es sinnvoll, wenn die Aufgaben-Datei * den selben Namen wie die Kontext-Datei trägt (natürlich mit anderer Dateiendung). * * Beispielsweise wird eine Dateireferenz mit dem Pfad `"/path/to/myExercise.mcq.json"` * auf eine Dateireferenz mit dem Pfad `"/path/to/myExercise.groovy"` abgebildet. * * Anwendungsbeispiel * * import { Helpers } from "@mathcoach/ide-api"; * const contextFile: MathCoach.File = await MC.ide.getContextFile(); * const exerciseFile: MathCoach.File = Helpers.contextFileToExerciseFile(contextFile); */ function contextFileToExerciseFile(contextFile: MathCoach.File): MathCoach.File; /** * Storage auf Basis einer Map. Kann z.B. bei Unit-Tests verwendet * werden, beid denen der LocalStorage nicht verfügbar ist. */ class InMemoryStorage implements Storage { private readonly items; get length(): number; clear(): void; getItem(key: string): string | null; key(_index: number): string | null; removeItem(key: string): void; setItem(key: string, value: string): void; } }