UNPKG

code-exercises-js

Version:

Create exercises for your students!

29 lines (28 loc) 1.45 kB
import EditableField from "./EditableField"; import Event from "./Event"; import { MonacoEditor } from "./MonacoEditor"; import ValidationRuleSet from "./Validation"; import IValidationRule from "./IValidationRule"; import { editor } from "monaco-editor/esm/vs/editor/editor.api"; import ValidationResultGroup from "./ValidationResultGroup"; import ValidationResultSummary from "./ValidationSummary"; export default abstract class Excercise<RuleType extends IValidationRule, RuleSetType extends ValidationRuleSet<RuleType>> { protected _editableFields: EditableField[]; protected abstract readonly _ruleSets: RuleSetType[]; protected readonly _monacoEditorInstance: MonacoEditor; protected readonly id: string; constructor(monacoEditorElement: HTMLElement, content?: string, monacoConfig?: editor.IStandaloneEditorConstructionOptions); abstract addValidationRule(): RuleSetType; protected abstract validateRule(rule: RuleType): Promise<boolean> | boolean; readonly onValidate: Event<ValidationResultSummary>; get content(): string; get monacoEditorInstance(): editor.IStandaloneCodeEditor; setEditableFields(fields: EditableField[]): void; clearEditableFields(): void; validate(): Promise<ValidationResultSummary>; /** * Override this method to add custom validation */ protected abstract validateExtend(): Promise<Array<ValidationResultGroup>>; private editableFieldsChanged; }