Benutzer:Reinhard Kraasch/GenderCats.js

aus Wikipedia, der freien Enzyklopädie
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
  • Internet Explorer/Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
  • Opera: Strg+F5
//<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|[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)/,
			/(.*)(Biedermeier|[Kk]rater|Pulitzer|Bonhoeffer|Fa[ck]tor|Wilder|\shier|Ferber|nomer|[Kk]loster|Hoover|Assistant|Ecuador)in(\b)/,
			/(.*)(Bier|Silber|Winter|Sommer|Volkskammer|[[Tt]imor|[Mm]utter|schwister|Rose|Gitter|Goerdeler|[Tt]heater)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 (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 ');
		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; 
		    }
		}
	    var lis = links.getElementsByTagName('a');
	    if(!lis)
	        return;
		for(var 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>