Benutzer:Reinhard Kraasch/GenderCats.js
Zur Navigation springen
Zur Suche springen
Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.
- Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
- Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
- Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
//<nowiki>
/*
Dieses Skript setzt die maskulinen Kategoriebezeichnungen
in feminine um, sobald die Kategorie:Frau gesetzt ist.
Hinweis: Das Skript ist "quick and dirty" programmiert und ausdrücklich als "Hack"
und nicht als Tool bezeichnet. Es wird von mir auch ab diesem Stadium hier nicht mehr
weiter gewartet, korrigiert oder ergänzt.
Zur Einbindung die Zeile
mw.loader.load('//de.wikipedia.org/w/index.php?title=Benutzer:Reinhard Kraasch/GenderCats.js&action=raw&ctype=text/javascript');
in die eigene common.js setzen (nicht die Version "GenderCats1.js", die dient nur zum Testen).
*/
mw.loader.using('mediawiki.util', function () {
function replaceIt(s){
// Heuristik 1: reguläre Ausdrücke zum Einsetzen eines "-in"
var re1 = new Array(
/(.*)(er|or|ant|ose|eur|ent|ist|let|när|oph|mat|apeut|tekt|ograf|ograph|nit|arch|gar|ret|nom|gand|[tlr]urg)(\b)/,
/(.*)([Kk]önig|[Pp]oet|[Cc]hef|[Hh]erzog|[Ww]irt|[Mm]äzen|[Zz]ar|[Ff]ürst|[Ss]oldat|[Kk]ommissar|var|onar|Sultan)(\b)/,
/(.*)(miral|pitän|atom)(\b)/,
/(.*)(ss|ek|log|owak|ech|ett|law|erb|wed|gog|gies|nes|ike|gan|ghan|aot|ass|mar|men|oat|ales|oles|ores|owen|lav|tros|amann|lan|chütz)e(\b)/,
/(.*)([Ff]ries|[Ss]chott|Finn|Dän|[Bb]rit|[Ii]r|[gP]ol|Est|Lett|sach|schub|aman|män|ach|ürk|len|tek|var|ulgar|anut|engal|gales)e(\b)/
);
// Heuristik 2: reguläre Ausdrücke zum Zurück-Ersetzen (wo Heuristik 1 zu viel des Guten tat)
var re2 = new Array(
/(.*)(\sder|\sd|einer|ement|zellent|oderner|\bfor|[Uu]nter|[Oo]ber|Peer|Tudor|Tower|mander|[Mm]ember)in(\b)/,
/(.*)(Webber|schwester|klärter|[Oo]rder|[Oo]per|[Oo]pfer|[Ll]ager|[Kk]inder|[Zz]iviler|[Ww]eiler)in(\b)/,
/(.*)([Aa]lter|dinger|ander|heimer|eimer|äröer|[Bb]rother|[Oo]fficer|Commandant|bner|[Ss]chlager|hriller)in(\b)/,
/(.*)(Cassirer|Trier|Schiller|Carter|Speyer|Leer|Hannover|Jever|Margaret|Thatcher|Leuschner|[Aa]skanier|[Mm]ünster|arlament|elder)in(\b)/,
/(.*)([Mm]eier|[Kk]rater|Pulitzer|Bonhoeffer|Fa[ck]tor|Wilder|\shier|Ferber|nomer|[Kk]loster|Hoover|Assistant|Ecuador)in(\b)/,
/(.*)([bB]ier|[sS]ilber|[[wW]inter|[sS]ommer|[kK]ammer|[Tt]imor|[Ww]indsor|[Mm]utter|schwister|Rose|[gG]itter|Goerdeler|[Tt]heater)in(\b)/,
/(.*)([rR]apper|[uU]lster|Pocher|Oliver|Nöstlinger|[Bb]auer|[Uu]nionist)in(\b)/,
/(.*)(dende)r(\b)/,/(.*)(gender)in(\b)/,
/(.*)(nete|lige|zende|rechte|mtierende|tretende|fangene|sche|tuierte|enlose|sierte|liche|[Ee]rste|dige|hörige|klagte|ntike)rin(\b)/,
/(.*)(stellte|ührende|auftragte|schaffende|jährige|lebende|diente)rin(\b)/,
/(.*)(ber)in(ühmten)(\b)/,
/(.*)(nde)rin(\sK)/,/(.*)(ner)in(-)/);
var t=s, tt, i, j;
for (j = 1;;j++) {
// "-in" anhängen bzw. einfügen - Heuristik 1 anwenden
tt = t;
for ( i = 0; i < re1.length; i++) {
t = t.replace(re1[i], "$1$2in$3");
}
if (t==tt) break;
}
for (j = 1;;j++) {
tt = t;
// hier wurde zu viel des Guten getan - Heuristik 2 anwenden
for (i = 0; i < re2.length; i++) {
t = t.replace(re2[i], "$1$2$3");
}
if (t==tt) break;
}
// Heuristik 3 : nachbessern
t = t.replace(/zosein\b/,'zösin');
t = t.replace(/arzt\b/,'ärztin');
t = t.replace(/Arzt\b/,'Ärztin');
t = t.replace(/Torero\b/,'Stierkämpferin');
t = t.replace(/mpirin\b/,'mpire');
t = t.replace(/chin und\b/,'che und');
t = t.replace(/nwalt\b/,'nwältin');
t = t.replace(/ierterin\b/,'ierte');
t = t.replace(/amterin\b/,'amtin');
t = t.replace(/(mt|mbuds|era|tshaupt)mann\b/,'$1frau');
t = t.replace(/([Ää]lter)erin\b/,'$1e');
t = t.replace(/([Kk])och\b/,'$1öchin');
t = t.replace(/([Dd])iseurin\b/,'$1iseuse');
t = t.replace(/nettin\b/,'nette');
t = t.replace(/Ugander\b/,'Uganderin');
t = t.replace(/rin-(Wilh|Körn|Pre)/,'r-$1');
t = t.replace(/\bettin\b/,'ette');
t = t.replace(/Weimarerin V/,'Weimarer V');
t = t.replace(/litairin\b/,'litaire');
t = t.replace(/([Ss])achse\b/,'$1ächsin');
t = t.replace(/terin Mensch\b/,'ter Mensch');
t = t.replace(/erschollenin\b/,'erschollene');
t = t.replace(/kretinärin\b/,'kretärin');
t = t.replace(/amteterin\b/,'amtete');
t = t.replace(/tinäterin\b/,'täterin');
t = t.replace(/([Mm])eterin\b/,'$1eter');
t = t.replace(/([Gg])raf\b/,'$1räfin');
t = t.replace(/([Rr])at\b/,'$1ätin');
t = t.replace(/([Ff]rei)herr\b/,'$1in');
t = t.replace(/([Pp]rinz)\b/,'$1essin');
t = t.replace('Verin.di','Ver.di');
t = t.replace(/([Bb])ischof\b/,'$1ischöfin');
t = t.replace(/(er)in(\sFest)/,'$1$2');
t = t.replace(/(ozess|ätress|akett|Satir|Sprach|[Kk]lass|perett)in/,'$1e');
t = t.replace(/(([Ff]o|[Hh]er)rsche\b)/,'$1rin');
t = t.replace(/ische (Ro|Feldh|Rundf)/,'ischer $1');
t = t.replace('essorin of','essor of');
t = t.replace(/istin klassische\b/,'istin klassischer');
t = t.replace(' oderin ',' oder ');
t = t.replace(/erin (Einzel|Ski|Dienerin)/,'e $1');
t = t.replace(/\(([Dd]er)in\b/,'($1');
t = t.replace(/erin (See|Land|Ghet|Schule|Ski|Hä|Dial|Cup|Höhle|Wilh|Nation|Reich|Proze|Münster)/,'er $1');
t = t.replace(/erner Fünfkä/,'erne Fünfkä');
t = t.replace(/e (Dial|Abköm|Zuord|Marxi|Natio|Bundes)/,'er $1');
t = t.replace(/er (Adler)in/,'er $1');
t = t.replace(/postolische /,'postolischer ');
t = t.replace(/chener(in) (Dom|Stifts)/,'chener $2');
t = t.replace('Singerin-Songwriterin','Singer-Songwriterin');
t = t.replace('zum Nationalrätin','zum Nationalrat');
t = t.replace('im Aufsichtsrätin','im Aufsichtsrat');
t = t.replace('Helenin ','Helene ');
t = t.replace(' Fische',' Fischer');
t = t.replace('-derin-','-der-');
t = t.replace('Jean Frankfurterin','Jean Frankfurter');
t = t.replace('weizerin ','weizer ');
t = t.replace('irolerin ','iroler ');
return t;
}
$(function () {
var h1 = document.getElementById('firstHeading');
var title = h1 ? h1.innerText : '';
var x = title.indexOf('Test GenderCats');
var a;
var istFrau = false;
if (x >= 0){
// Testseiten bearbeiten
var li = document.getElementsByTagName('li');
for(var j = 0; j < li.length; j++)
{
var b = li[j];
var lis = b.getElementsByTagName('a');
for(var i = 0; i < lis.length; i++)
{
a = lis[i];
a.innerText = replaceIt(a.innerText);
}
}
} else {
// Kategorien durchsuchen
var links = document.getElementById('mw-normal-catlinks');
// Skin Vector, Monobook, Modern
if(!links) {
links = document.getElementById('p-normal-catlinks');
// Skin Timeless
if(!links) {
return;
}
}
lis = links.getElementsByTagName('a');
if(!lis)
return;
for ( i = 0; i < lis.length; i++)
{
a = lis[i];
// Ist Kategorie "Frau" vorhanden?
if (a.innerText == "Frau") {
istFrau = true;
// alert("Frau");
break;
}
}
if (istFrau) {
// dann ersetzen
for(i = 0; i < lis.length; i++)
{
a = lis[i];
a.innerText = replaceIt(a.innerText);
a.title = replaceIt(a.title);
// alert(a.innerText);
}
}
}
}); });
// </nowiki>