Added optional vowel length verification
This commit is contained in:
parent
510cec2d9a
commit
0db5003917
@ -10,13 +10,12 @@
|
|||||||
|
|
||||||
Array.from(form.elements).forEach((input) => {
|
Array.from(form.elements).forEach((input) => {
|
||||||
if (input.type=="text") {
|
if (input.type=="text") {
|
||||||
console.log(input.dataset.expected.length)
|
|
||||||
input.setAttribute("style", input.getAttribute("style") + "; width: " + input.dataset.expected.length + "em");
|
input.setAttribute("style", input.getAttribute("style") + "; width: " + input.dataset.expected.length + "em");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function mapper(char) {
|
function nomacron_to_macron(char) {
|
||||||
var mapper = { 'A': 'Ā',
|
var mapper = { 'A': 'Ā',
|
||||||
'a': 'ā',
|
'a': 'ā',
|
||||||
'E': 'Ē',
|
'E': 'Ē',
|
||||||
@ -30,22 +29,45 @@
|
|||||||
return mapper[char[0]];
|
return mapper[char[0]];
|
||||||
}
|
}
|
||||||
|
|
||||||
function input_to_macron(input) {
|
function macron_to_nomacron(char) {
|
||||||
return input.replace(/(\w)\1/, mapper);
|
var mapper = { 'Ā': 'A',
|
||||||
|
'ā': 'a',
|
||||||
|
'Ē': 'E',
|
||||||
|
'ē': 'e',
|
||||||
|
'Ī': 'I',
|
||||||
|
'ī': 'i',
|
||||||
|
'Ō': 'O',
|
||||||
|
'ō': 'o',
|
||||||
|
'Ū': 'U',
|
||||||
|
'ū': 'u'};
|
||||||
|
return mapper[char];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function input_to_nomacron(input) {
|
||||||
|
return input.replace(/Ā|ā|Ē|ē|Ī|ī/, macron_to_nomacron);
|
||||||
|
}
|
||||||
|
|
||||||
|
function input_to_macron(input) {
|
||||||
|
return input.replace(/(\w)\1/, nomacron_to_macron);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
function validate() {
|
function validate() {
|
||||||
const forms = document.querySelectorAll('form');
|
const forms = document.querySelectorAll('form');
|
||||||
const form = forms[0];
|
const form = forms[0];
|
||||||
|
|
||||||
|
|
||||||
Array.from(form.elements).forEach((input) => {
|
Array.from(form.elements).forEach((input) => {
|
||||||
|
if (input.type=="text" && document.getElementById('vowel_length').checked == false) {
|
||||||
|
is_macron_ok = (input.value == input_to_nomacron(input.dataset.expected));
|
||||||
|
console.log(input_to_nomacron(input.dataset.expected));
|
||||||
|
is_double_ok = false;
|
||||||
|
} else {
|
||||||
is_double_ok = (input_to_macron(input.value) == input.dataset.expected);
|
is_double_ok = (input_to_macron(input.value) == input.dataset.expected);
|
||||||
is_macron_ok = (input.value == input.dataset.expected);
|
is_macron_ok = (input.value == input.dataset.expected);
|
||||||
|
}
|
||||||
if (input.type=="text" && !(is_double_ok || is_macron_ok)) {
|
if (input.type=="text" && !(is_double_ok || is_macron_ok)) {
|
||||||
input.setAttribute("style", input.getAttribute("style") + "; border-color:red");
|
input.setAttribute("style", input.getAttribute("style") + "; border-color:red");
|
||||||
console.log('expected: ' + input.dataset.expected);
|
|
||||||
console.log('input: ' + input_to_macron(input.value));
|
|
||||||
} else if (input.type=="text") {
|
} else if (input.type=="text") {
|
||||||
input.setAttribute("style", input.getAttribute("style") + "; border-color:green");
|
input.setAttribute("style", input.getAttribute("style") + "; border-color:green");
|
||||||
}
|
}
|
||||||
@ -69,6 +91,7 @@
|
|||||||
<body>
|
<body>
|
||||||
<h1><a href="/latin/llpsi">Lingua Latina Per Se Illustrata</a></h1>
|
<h1><a href="/latin/llpsi">Lingua Latina Per Se Illustrata</a></h1>
|
||||||
<h2>{{pensum_title}}</h2>
|
<h2>{{pensum_title}}</h2>
|
||||||
|
Quantitās: <input type="checkbox" id="vowel_length">
|
||||||
<form class="Pensum_A" onsubmit="return validate();">
|
<form class="Pensum_A" onsubmit="return validate();">
|
||||||
{{pensum_content|safe}}
|
{{pensum_content|safe}}
|
||||||
<br>
|
<br>
|
||||||
|
Loading…
Reference in New Issue
Block a user