/*
Dieses JS-Programm ist vom Benutzer ] entwickelt. Es wird für die automatische Erstellung der Wortformen der lateinischen Wörter gebraucht.
*/
Version = 'neu) (] 1.1';
LoadingURL = '//upload.wikimedia.org/wikipedia/commons/2/2a/Loading_Key.gif';
function Inh(A, F) {
jQuery.ajax({
url: 'https://de.wiktionary.org/w/index.php?title=' + A + '&action=raw',
success: F,
async: false
});
}
function Eltern(El, Zahl) {
var a = El.parentNode;
for ( i = 0 ; i < (Zahl - 1); i ++ ) {
a = a.parentNode;
}
return a;
}
Makron = {};
function F(Wort) {
var W = Wort;
var Ersätze = [
, , , , , , ,
, , , ,
];
for ( i = 0 ; i < Ersätze.length; i ++ ) {
Wort = Wort.replace(new RegExp(Ersätze, 'g'), Ersätze);
}
Makron = W;
return Wort;
}
function Worttrennung(w) {
vollständig = true;
if ( arguments.length > 1 && arguments === false ) vollständig = false;
v = w.match(/+/g);
c = w.match(/+/g);
s = ;
for ( j = 0; j < w.length; j ++ ) {
if ( s.length == 0 ) {
s.push(w);
}
else {
if ( s.match(/+/g) ) {
if ( w.match(/+/g) ) s += w;
else s.push(w);
} else {
if ( w.match(/+/g) ) s += w;
else s.push(w);
}
}
}
a = '';
cu = s.join('-');
function nas (p, t) {
cep = cu.match(new RegExp(p, 'g')).replace(/-/g, '');
if ( cep !== null ) {
a += (cu.match(new RegExp(p, 'g')).replace(/-/g, '') + '|');
cu = cu.replace(new RegExp(p + (t === true ? '-' : ''), 'g'), '');
console.log(cu);
console.log(a);
}
}
var buff = false;
while ( cu.match(//g) !== null && cu.match(//g).length > 1 ) {
// pa|ter
if ( cu.match(/^{1,3}---/g) ) {
nas('^{1,3}-', true);
//console.log(': pa|ter');
}
// cat|tus
if ( cu.match(/^--{2}/g) ) {
nas('^--', false);
//console.log(': cat|tus');
}
// ur|bis
if ( cu.match(/^-{2}/g) ) {
nas('^-', false);
//console.log(': ur|bis');
}
//per|do
if ( cu.match(/^--{2}/g) ) {
nas('^--', false);
//console.log(': per|do');
}
//me|us
if ( cu.match(/^*-{2}/g) ) {
nas('^*-', false);
//console.log(': me|us');
}
//u|bi
if ( cu.match(/^--+$|^--+-/g) ) {
nas('^', false);
//console.log(': u|bi');
}
//a|u|rum
if ( cu.match(/^{2}-/g) ) {
nas('^', false);
//console.log(': a|u|rum');
}
//sub|stan|ti|a
if ( cu.match(/^{2,3}--{2,}/g) ) {
nas('^{2,3}--', false);
//console.log(': sub|stan|ti|a');
}
//sub|stra|men
if ( cu.match(/^{2,3}--/g) ) {
nas('^{2,3}--', false);
//console.log(': sub|stra|men');
}
//...stan|ti|a
if ( cu.match(/^{1,3}--{2,}/g) ) {
nas('^{1,3}--', false);
//console.log(': ...stan|ti|a');
}
//
cu = cu.replace(/^-(?=)/g, '');
if ( buff !== false && cu == buff ) break;
buff = cu;
}
a += cu.replace(/-/g, '');
// tr, pr etc.
a = a.replace(/()\|r/g, "|$1r");
// Diphthonge ae, au
a = a.replace(/(a)\|()/g, "$1$2");
// oe-Diphthong
a = a.replace(/(o)\|(e)/g, "$1$2");
// eu-Diphthong
a = a.replace(/(e)\|(u)\|/g, "$1$2|");
// iu = ju
a = a.replace(/(i)\|(u)\|/g, "$1$2|");
// qu als einzige Silbe nicht wahrnehmen
a = a.replace(/qu\|(*)/g, "qu$1|");
// qua|e-Trennung vermeiden
a = a.replace(/qua\|e/, "quae|")
// griechische Diphthonge korrigieren
a = a.replace(/t\|h/g, "|th");
a = a.replace(/p\|h/g, "|ph");
a = a.replace(/c\|h/g, "|ch");
// ë abgrenzen
a = a.replace(/()(?=ë)/g, "$1|");
// | am ende löschen
a = a.replace(/\|$/g, "");
// |||... -> |
a = a.replace(/\|{2,}/g, "|");
if ( vollständig ) {
// manche Präfixe als enzige Silben
if ( WortBeginntVomPräfix ) {
for ( i = 0; i < GeschlP.length; i ++ ) {
pt = new RegExp(GeschlP.replace(/.$/, '') + '\\|' + GeschlP.match(/.$/), 'g');
a = a.replace(pt, GeschlP + '|');
}
}
//
vw = Makron;
nz = a;
a = a.split('|');
b = ;
for ( i = 0; i < a.length; i ++ ) {
var p = new RegExp('^.{' + a.length + '}', 'g');
b = a.replace(p, vw.match(p));
vw = vw.replace(vw.match(p), '');
}
return b.join('·');
}
else {
return a.split('|').join('·');
}
}
function Nachricht(N) {
console.log(N);
}
if (mw.config.get("wgNamespaceNumber") == 0) { //nur im Eintragsnamensraum
Inh(mw.config.get("wgPageName"), function (T) { Artikel = T; });
if ( Artikel.match(/Wortart\|\w+(?=\|Latein\}\})/g) !== null && Artikel.match(/==.+\{\{Sprache\|Latein\}\}.+/g) ) {
Wortarten = Artikel.match(/Wortart\|\w+(?=\|Latein\}\})/g);
for ( i = 0 ; i < Wortarten.length ; i ++ ) {
Wortarten = Wortarten.replace('Wortart|', '');
}
if (Wortarten.length != Artikel.match(/\{\{Latein\s+Übersicht/g).length) {
Nachricht('Die Zahlen stimmen nicht überein!');
ZSÜ = false;
} else ZSÜ = true;
} else {
ZSÜ = false;
}
if ( ZSÜ && mw.config.get("wgAction") == 'view') {
var Sprachtitel = $('h2 span.mw-headline');
for ( i = 0 ; i < Sprachtitel.length ; i ++ ) {
if ( Sprachtitel.id.match(/\(Latein\)/g) ) {
Titel = $(Sprachtitel).parent();
continue;
}
}
var h3 = $('h3');
if ( Titel.next().prop("tagName") == "H3" ) {
var ETI = $.inArray(Titel.next(), h3);
}
else {
var ETI = $.inArray(Titel.next().find('h3'), h3);
}
var Tabellen = ;
for ( i = 0; i < Wortarten.length; i ++ ) {
Tabellen.push( $(h3).next() );
}
$(Tabellen).append('<small><center><a style="position:absolute;cursor:pointer;" onclick="Anlegen(Eltern(this, 3), Eltern(this, 1))">\
Flektierte Formen anlegen</a><br>\
<p style="position: relative; display: none; left: 50%;" class="latein-script-loading">\
<img width="16" src="' + LoadingURL + '"> <a style="cursor:pointer;"></a></p></center></small>');
}
function BSenden(Name, Inhalt) {
Erstellung = JSON.parse(
$.ajax({
url:mw.util.wikiScript('api'),
method: 'POST',
data: { action: 'edit',
title: Name,
summary: Version,
text: Inhalt,
token: mw.user.tokens.get('editToken'),
format: 'json'
},
async:false
})
.responseText
);
}
}
function Bearbeiten(Name, Inhalt) {
Inhalt = Inhalt.replace(/\t+\n/g, '\n');
if ( Angelegt == 0 ) {
BSenden(Name, Inhalt);
} else {
Inh(Name, function (T) { Ziel = T; });
if ( ! Ziel.match(/\{\{Sprache\|Latein\}\}/g) ) {
Interwiki = new RegExp('\\\\]', 'g');
if ( Ziel.match(Interwiki) !== null ) {
Ziel = Ziel.replace(Ziel.match(Interwiki), "\n" + Inhalt + "\n\n" + Ziel.match(Interwiki));
}
else {
Ziel += "\n" + Inhalt;
}
console.log(Ziel);
BSenden(Name, Ziel);
}
}
}
function Anlegen(Tab, Ct) {
// über den Präfix fragen
GeschlP = 'ab ad ex in ob sub'.split(' ');
var Frage = 'Beginnt das Wort "' + mw.config.get("wgTitle") + '" vom Präfix, oder ist es einfach ein Zusammenfallen? (Ok=beginnt/Cancel=Zusammenfallen)';
if ( mw.config.get("wgTitle").match( new RegExp('^(' + GeschlP.join('|') + ')', 'g') ) && confirm(Frage) === true ) {
WortBeginntVomPräfix = true;
} else WortBeginntVomPräfix = false;
WA = Wortarten;
correct = true;
if ( WA == 'Substantiv' ) {
j = 1;
Formen = {'Singular':{},'Plural':{}};
Angelegt = {};
tb_tr = $(Tab).find('tbody tr');
while ( tb_tr.get(j) !== undefined ) {
console.log(0);
tr = $ ( tb_tr.get(j) );
if ( tr.children().length > 3 ) {
Nachricht('Es gibt mehr Parameter, als 1 Singular und 1 Plural!');
correct = false;
break;
}
th = $(tr.find('th'));
td = tr.find('td');
td0 = $( td.get(0) );
td1 = $( td.get(1) );
if ( td0.text().match(/\w/g) ) Formen = F(td0.text());
if ( td1.text().match(/\w/g) ) Formen = F(td1.text());
Angelegt = (td0.html().match('vorhanden') ? 0 : 1);
Angelegt = (td1.html().match('vorhanden') ? 0 : 1);
j ++;
}
Wörter = {};
for ( var Zahl in Formen ) {
for ( var Kasus in Formen ) {
Punkt = "* " + Kasus + " " + Zahl + " des Substantivs '''[["
+ mw.config.get("wgTitle") + "]]'''\n";
var Mrk = Formen;
if ( Formen !== undefined ) {
Wörter += Punkt;
}
else {
Wörter = Punkt;
}
Wörter = Wörter.replace(/^undefined/g, '');
}
}
Vorlage = "== @PN ({{Sprache|Latein}}) ==\n=== {{Wortart|Deklinierte Form|Latein}} ===\
\n\n{{Worttrennung}}\n:@WT\n\n{{Grammatische Merkmale}}\n@FF\
\n{{Grundformverweis Dekl|" + mw.config.get("wgTitle") + "}}";
lsl = $ (Ct).find('p.latein-script-loading');
$ (lsl).toggle();
for ( var Wort in Wörter ) {
$ (lsl).find('a').attr('href', 'https://dictious.com/de/' + encodeURIComponent(Wort));
$ (lsl).find('a').html(Wort);
Bearbeiten( Wort, Vorlage.replace('@WT', Worttrennung(Wort))
.replace('@FF', Wörter).replace('@PN', Makron) );
}
$ (lsl).toggle();
}
}