function awnserQuestion(awnserData){ const question = document.querySelector(".question:not(.hidden)"); if (!question) { return; } const questionTextDom = question.querySelector(".questionText .mattext"); if (!questionTextDom) return; const questionText = questionTextDom.textContent.trim(); const answersDom = question.querySelector("ul.coreContent"); if (!answersDom) return; const answers = answersDom.children; for (let answer of answers) { const input = answer.querySelector("input"); if (!input) continue; input.checked = false; } const correctAnswers = findAnswers(awnserData, questionText, answers); if (correctAnswers.length === 0) { GM_log("no awnser") return; } for (const answer of correctAnswers) { const input = answer.querySelector("input"); if (!input) continue; input.checked = true; } } function findAnswers(awnserData, questionText, answers) { if (awnserData === null) { alert("No chapter data loaded. Maybe the fetch failed?!"); return []; } const correctAnswers = []; for (let entry of awnserData) { if (matchAwnser(questionText.trim(), entry.question.trim())) { for (let availableAnswer of answers) { for (let possibleAnswer of entry.answers) { if (matchAwnser(availableAnswer.textContent.trim(), possibleAnswer)) { correctAnswers.push(availableAnswer); } } } } } return correctAnswers; } function matchAwnser(textA, textB) { const replaceRegex = /[^\w]/gi; textA = textA.replace(replaceRegex, ""); textB = textB.replace(replaceRegex, ""); return (textA === textB); } window.awnserQuestion = awnserQuestion;