chore(backend): Aanpassingen Dwengo Learning-Object-Repository
Processing uit Dwengo Learning-Object-Repository geconverteerd naar TypeScript en aangepast aan onze app. Functionaliteit van Dwengo Learning-Object-Repository in ons project gekopiëerd en deels aanBestanden die enkel types of interfaces exporteren hernoemd naar *.d.tsgepast aan TypeScript en ons project.
This commit is contained in:
parent
ba3da01d2d
commit
463c8c9fc0
45 changed files with 1258 additions and 3747 deletions
|
@ -0,0 +1,58 @@
|
|||
/**
|
||||
* Based on https://github.com/dwengovzw/Learning-Object-Repository/blob/main/app/processors/gift/gift_processor.js
|
||||
*/
|
||||
|
||||
import Processor from "../processor.js";
|
||||
import DOMPurify from 'isomorphic-dompurify';
|
||||
import {GIFTQuestion, parse} from "gift-pegjs"
|
||||
import {DwengoContentType} from "../content-type";
|
||||
import {GIFTQuestionRenderer} from "./question-renderers/gift-question-renderer";
|
||||
import {MultipleChoiceQuestionRenderer} from "./question-renderers/multiple-choice-question-renderer";
|
||||
import {CategoryQuestionRenderer} from "./question-renderers/category-question-renderer";
|
||||
import {DescriptionQuestionRenderer} from "./question-renderers/description-question-renderer";
|
||||
import {EssayQuestionRenderer} from "./question-renderers/essay-question-renderer";
|
||||
import {MatchingQuestionRenderer} from "./question-renderers/matching-question-renderer";
|
||||
import {NumericalQuestionRenderer} from "./question-renderers/numerical-question-renderer";
|
||||
import {ShortQuestionRenderer} from "./question-renderers/short-question-renderer";
|
||||
import {TrueFalseQuestionRenderer} from "./question-renderers/true-false-question-renderer";
|
||||
|
||||
class GiftProcessor extends Processor<string> {
|
||||
|
||||
private renderers: RendererMap = {
|
||||
Category: new CategoryQuestionRenderer(),
|
||||
Description: new DescriptionQuestionRenderer(),
|
||||
Essay: new EssayQuestionRenderer(),
|
||||
Matching: new MatchingQuestionRenderer(),
|
||||
Numerical: new NumericalQuestionRenderer(),
|
||||
Short: new ShortQuestionRenderer(),
|
||||
TF: new TrueFalseQuestionRenderer(),
|
||||
MC: new MultipleChoiceQuestionRenderer()
|
||||
}
|
||||
|
||||
constructor() {
|
||||
super(DwengoContentType.GIFT);
|
||||
}
|
||||
|
||||
override renderFn(giftString: string) {
|
||||
const quizQuestions: GIFTQuestion[] = parse(giftString);
|
||||
|
||||
let html = "<div class='gift'>";
|
||||
for (let question of quizQuestions) {
|
||||
html += this.renderQuestion(question);
|
||||
}
|
||||
html += "</div>"
|
||||
|
||||
return DOMPurify.sanitize(html);
|
||||
}
|
||||
|
||||
private renderQuestion<T extends GIFTQuestion>(question: T): string {
|
||||
const renderer = this.renderers[question.type] as GIFTQuestionRenderer<T>;
|
||||
return renderer.render(question);
|
||||
}
|
||||
}
|
||||
|
||||
type RendererMap = {
|
||||
[K in GIFTQuestion["type"]]: GIFTQuestionRenderer<Extract<GIFTQuestion, { type: K }>>
|
||||
};
|
||||
|
||||
export default GiftProcessor;
|
Loading…
Add table
Add a link
Reference in a new issue