63 lines
1.8 KiB
JavaScript
63 lines
1.8 KiB
JavaScript
|
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;
|