/** * Based on https://github.com/dwengovzw/Learning-Object-Repository/blob/main/app/processors/gift/gift_processor.js */ import DOMPurify from 'isomorphic-dompurify'; import { GIFTQuestion, parse } from 'gift-pegjs'; import { DwengoContentType } from '../content-type.js'; import { GIFTQuestionRenderer } from './question-renderers/gift-question-renderer.js'; import { MultipleChoiceQuestionRenderer } from './question-renderers/multiple-choice-question-renderer.js'; import { CategoryQuestionRenderer } from './question-renderers/category-question-renderer.js'; import { DescriptionQuestionRenderer } from './question-renderers/description-question-renderer.js'; import { EssayQuestionRenderer } from './question-renderers/essay-question-renderer.js'; import { MatchingQuestionRenderer } from './question-renderers/matching-question-renderer.js'; import { NumericalQuestionRenderer } from './question-renderers/numerical-question-renderer.js'; import { ShortQuestionRenderer } from './question-renderers/short-question-renderer.js'; import { TrueFalseQuestionRenderer } from './question-renderers/true-false-question-renderer.js'; import { StringProcessor } from '../string-processor.js'; class GiftProcessor extends StringProcessor { 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): string { const quizQuestions: GIFTQuestion[] = parse(giftString); let html = "