Commit a155c22f authored by Jindřich Dítě's avatar Jindřich Dítě

Improved generator logic

parent 3a1b87d2
......@@ -2,9 +2,15 @@ var generators = {
"czech-adjective": {
'label': 'česká přídavná jména',
'input_fields': [
'Kořen 1. stupně přídavného jména ("mlad" pro mladý, "jarn" pro jarní, "rozmarn" pro rozmarný atd.)',
'1. pád 2. stupně přídavného jména ("mladší", "jarnější", "rozmarnější" atd.)'
'mužský rod, jednotné číslo, 1. pád 1. stupně přídavného jména ("mladý", "jarní", "rozmarný" atd.)'
],
"forms": {
"mladý": [
"s 1 ý$",
"s 1 ší dý$ 1 ější vý$",
"s 1 í [dv]ý$"
]
},
'patterns': {
'mladý': [
'/1ý',
......@@ -35,11 +41,11 @@ var generators = {
'/1é',
'/1ém',
'/1ým',
'', // may require softening of letter before
'/3',
'/1ých',
'/1ým',
'/1é',
'',
'/3',
'/1ých',
'/1ými',
'/1é',
......
......@@ -12,6 +12,7 @@ Object.keys(generators).forEach(key => {
const fillPatterns = () => {
wordCategory = wordCategorySelector.options[wordCategorySelector.selectedIndex].value;
patternSelector.innerHTML = "";
Object.keys(generators[wordCategory].patterns).forEach(key => {
const opt = document.createElement('option');
opt.value = key;
......@@ -22,6 +23,7 @@ const fillPatterns = () => {
const createUIForm = () => {
pattern = patternSelector.options[patternSelector.selectedIndex].value;
UIForm.innerHTML = "";
generators[wordCategory].input_fields.forEach((pat, idx) => {
const lbl = document.createElement("label");
lbl.for = "pattern-" + idx;
......@@ -45,14 +47,31 @@ const generateFormsAndSubmit = () => {
const HTMLForm = document.createElement("form");
HTMLForm.action = "https://tools.wmflabs.org/lexeme-forms/template/" + wordCategory;
HTMLForm.method = "post";
generators[wordCategory].forms[pattern].forEach((pat, idx) => {
const patParts = pat.split(" ");
if (patParts[0] === "s") {
let regexes = [];
for (let i = 3; i < patParts.length; i += 3) {
regexes.push(new RegExp(patParts[i]));
}
regexes.forEach((r, ix) => {
if (document.getElementById("pattern-1").value.match(r) != null) {
let inp = document.createElement("input");
inp.id = "pattern2-" + (idx + 1);
inp.value = document.getElementById("pattern-1").value.slice(0, -parseInt(patParts[3 * ix + 1])) + patParts[3 * ix + 2];
document.body.appendChild(inp);
}
})
}
});
generators[wordCategory].patterns[pattern].forEach(pat => {
const match = pat.match(regex);
const form = match === null ? "" : match[1] + document.getElementById("pattern-" + match[2]).value + match[3];
const form = match === null ? "" : match[1] + document.getElementById("pattern2-" + match[2]).value + match[3];
const inp = document.createElement("input");
inp.type = "hidden";
inp.name = "form_representation";
inp.value = form;
HTMLForm.appendChild(inp)
HTMLForm.appendChild(inp);
});
document.body.appendChild(HTMLForm);
HTMLForm.submit();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment