See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Benutzer:Euku/persDaten.js – Wikipedia

Benutzer:Euku/persDaten.js

aus Wikipedia, der freien Enzyklopädie

Hinweis: Leere nach dem Speichern den Browser-Cache, um die Änderungen zu sehen: Mozilla/Firefox: Shift-Strg-R, Internet Explorer: Strg-F5, Opera: F5, Safari: ⌘-R (bzw. Strg-R), Konqueror: Strg-R.

 /************************************************************************
  * von [[:de:User:Spongo]]
  * 8. März 2007 <nowiki>
  *
  * ACHTUNG nicht ohne Nachkontrolle ausführen!
  * Insbesondere bei Russen ist auf das Datum zu achten.
  *
  * Fügt automatisch Personen-Kategorien und {{Personendaten}} ein. Wenn
  * Daten/Kategorien schon vorhanden sind bleiben sie bestehen bzw.
  * werden mitgenutzt.
  *
  * Wie man das Skript übernimmt steht auf der Diskussionseite.
  *
  * TODO: Test in anderen Browsern. Bisher nur: Firefox 2.0
  *
  * Licence: CC-by-sa: Dieser Quellcode wurde unter den Bedingungen der Creative Commons Attribution-ShareAlike
  * License (http://creativecommons.org/licenses/by-sa/2.5/) (abgekürzt „cc-by-sa“) in der Version 2.5 veröffentlicht.
  *************************************************************************/
 function addPersData() {
     StaatsAdj = new Array("deutsche", "britische", "französische", "polnische", "dänische", "US-amerikanische", "schweizer", "österreichische", "spanische", "japanische", "italienische", "russische", "türkische", "niederländische", "italienische", "griechische", "chinesische", "tschechische", "slowakische", "ungarische");
     KatBez =    new Array("Deutscher", "Brite", "Franzose", "Pole", "Däne", "US-Amerikaner", "Schweizer", "Österreicher", "Spanier", "Japaner", "Italiener", "Russe", "Türke", "Niederländer", "Italiener", "Grieche", "Chinese", "Tscheche", "Slowake", "Ungar");
     // Memo: Abschnitt "Kategorie zur Staatsangehörigkeit schon drin?" updaten
 
     //regExVollstDatum = /\d\d\.?\ ?(?:Januar|Februar|März|April|Mai|Juni|Juli|August|September|Oktober|November|Dezember|(?:[012]\d|3[01]\.))\ ?(?:\d+)/;
     //regExDatum  = /(?:\d\d\.?\ ?)?(?:Januar|Februar|März|April|Mai|Juni|Juli|August|September|Oktober|November|Dezember|(?:[012]\d|3[01]\.))?\ ?(?:\d+)/;
 
     /* name: der Name, Vorname für Personendaten, kann Umlaute und Sonderzeichen enthalten
        nameSort: nur für DEFAULTSORT, ohne Umlaute und Sonderzeichen    */
     geschlecht = name = nameSort = alias = beschreibung = gebDatum = gebOrt = sterbeDatum = sterbeOrt = staat = '';
     // entsprechende Aufgabe erledigt oder schon im Artikel
     geschlKatErl = gebKatErl = sterbeKatErl = defaultSortErl = persDatenErl = staatsKatErl = false;
 
     // quellTextRein ist der gesäuberte Quelltext; quellText das Original
     quellTextRein = quellText = document.editform.wpTextbox1.value;
     quellTextRein = quellTextRein.replace(/\n/g, " ");                      // keine Umbrüche
     quellTextRein = quellTextRein.replace(/\<\!\-\-.*?\-\-\>/g, "")         // alle Kommentare entfernen
     quellTextRein = quellTextRein.replace(/\{\|.*?\|\}/g, "")               // alle Tabellen entfernen
     quellTextRein = quellTextRein.replace(/(\[\[([^\|\]]*?\|)?|\]\])/g, "") // alle [[Link|Links]] entfernen
 
     // suche möglichen Anfang
     offsetBeschreibung = quellTextRein.indexOf("'''"+wgTitle+"'''");    // korrekt formatierter Name und gleiches Lemma
     offsetBeschreibung = (offsetBeschreibung == -1 ? quellTextRein.search(/\'\'\'([^']*?)\'\'\'/) : offsetBeschreibung); // erstes fette Wort
     offsetBeschreibung = (offsetBeschreibung == -1 ? quellTextRein.indexOf(wgTitle) : offsetBeschreibung); // nur Lemma
     offsetBeschreibung = (offsetBeschreibung == -1 ? 0 : offsetBeschreibung); // nichts gefunden
     quellTextRein = quellTextRein.slice(offsetBeschreibung, quellTextRein.length);  // den ersten Teil abschneiden
 
     // suche Geschlecht wenn nötig
     geschlKatErl = (quellText.search(/\[\[(Kategorie|Category)\:(Mann|Frau)(\|[^\]]*)?\]\]/gi) != -1); // Geschlechtskategorie schon drin?
 
     if (!geschlKatErl && (quellTextRein.search(/((ist|war)\ eine|\]\]in)\ /) < 250) && (quellTextRein.search(/((ist|war)\ eine|\]\]in)\ /) != -1))
          geschlecht = 'w';
 
     // Namen, Vornamen bestimmen
     nameArray = wgTitle.replace(/\ \(.*\)$/, "").split(" "); // " (Sportler)" aus [[Max Muster (Sportler)]] entfernen
     name = (nameArray.length == 1 ? nameArray[0] : nameArray[nameArray.length -1] + ",");
     for (i = 0; i < nameArray.length -1; ++i)
         name += " " + nameArray[i];
     // Umlaute und andere Zeichen in lateinische umwandeln
     nameSort = name.replace(/ö/g,"o").replace(/Ö/g,"O").replace(/ä/g,"a").replace(/Ä/g,"A").replace(/ü/g,"u").replace(/Ü/g,"U")
                    .replace(/ß/g,"s").replace(/ñ/g,"n").replace(/Ø/g,"O").replace(/ø/g,"o").replace(/õ/g,"o").replace(/ç/g,"c")
                    .replace(/Ç/g,"C").replace(/É/g,"E").replace(/é/g,"e").replace(/Ó/g,"O").replace(/ó/g,"o").replace(/Í/g,"I")
                    .replace(/í/g,"i").replace(/Ú/g,"U").replace(/ú/g,"u").replace(/Á/g,"A").replace(/á/g,"a").replace(/È/g,"e")
                    .replace(/è/g,"e").replace(/Ò/g,"O").replace(/ò/g,"o").replace(/Ì/g,"I").replace(/ì/g,"i").replace(/Ù/g,"U")
                    .replace(/ù/g,"u").replace(/À/g,"A").replace(/à/g,"a").replace(/č/g,"c").replace(/ő/g,"o").replace(/ń/g,"n")
                    .replace(/ź/g,"z");
 
     // {{Personendaten}} schon drin?
     persDatenErl = (quellText.search((/\{\{Personendaten/gi)) != -1);
     if (persDatenErl) {
        // nutze vorhandene Daten
         //beschreibung = extrahiere(/\|KURZBESCHREIBUNG\=([^|]*?)\ \|GEBURTSDATUM\=/, quellTextRein);
        gebDatum = extrahiere(/\|GEBURTSDATUM\=\ ?([^|]*?)\ \|GEBURTSORT\=/, quellTextRein);
         //gebOrt = extrahiere(/\|GEBURTSORT\=\ ?(.*?)\ \|STERBEDATUM\=/, quellTextRein);
        sterbeDatum = extrahiere(/\|STERBEDATUM\=\ ?([^|]*?)\ \|STERBEORT\=/, quellTextRein);
         //sterbeOrt = extrahiere(/\|STERBEORT\=\ ?(.*?)\ ?\}\}\=/, quellTextRein);
     }
     gebKatErl    = (quellText.search(/\[\[(?:Kategorie|Category)\:Geboren\ \d{1,4}[^\]]*\]\]/gi) != -1);
     sterbeKatErl = (quellText.search(/\[\[(?:Kategorie|Category)\:Gestorben\ \d{1,4}[^\]]*\]\]/gi) != -1);
 
     // {{DEFAULTSORT:...}}-Baustein schon drin?
     defaultSortErl = (quellText.search(/\{\{DEFAULTSORT\:/i) != -1);
 
     // Kategorie zur Staatsangehörigkeit schon drin?
     staatsKatErl = (quellText.search(/\[\[(?:Kategorie|Category)\:(?:Deutscher|Brite|Franzose|Pole|Däne|US\-Amerikaner|Schweizer|Österreicher|Spanier|Japaner|Italiener|Russe|Türke|Niederländer|Italiener|Grieche|Chinese|Tscheche|Slowake|Ungar)[^\]]*\]\]/gi) != -1);
 
     // Beschreibung suchen
     beschreibung = extrahiere(/(?:(?:ist|war)|gilt\ als)\ (?:eine*|die|der)*\ *(.*?)\./, quellTextRein);  // Satz beim Punkt abschneiden
 
     // Alias suchen
     alias = extrahiere(/(?:bürgerlicher\ Name|gebürtig|geboren\ als|bürgerlich|alias|bekannt\ als|Pseudonym\:?|eigentlich)\ *?\'\'\'?(.*?)\'\'\'?/i, quellTextRein);
 
     // Staatsangehörigkeit suchen
     for (i = 0; !staatsKatErl && i < StaatsAdj.length; ++i)
          if (beschreibung.indexOf(StaatsAdj[i]) != -1) {
            staat = KatBez[i];
            break;
          }
 
     // Geburtsdaten suchen wenn nötig
     if ((!persDatenErl) || (persDatenErl && !gebKatErl)) {
	     gebDatenPos = quellTextRein.search(/(\*|geb\.\ |geboren\ |von\ )*/);
	     if ((gebDatenPos < 300) && (gebDatenPos != -1)) {
	         tmp = quellTextRein.slice(gebDatenPos, 450);
	         if (gebDatum.search(/\d\d\.?\ ?(?:Januar|Februar|März|April|Mai|Juni|Juli|August|September|Oktober|November|Dezember|(?:[012]\d|3[01]\.))\ ?(?:\d+)/) == -1) // bisheriges Datum ok?
	            gebDatum = extrahiere(/(?:\(\ ?\*|geb\.|geboren|von)\ ?(\d[^;\-]*?\d\d)[ .,:;)†]/, tmp);                       // Datum finden
	         if (gebDatum == "") // zweiter Versuch, Datum komplett
	            gebDatum = extrahiere(/(?:\*|geb\.|geboren|von).{0,25}?((?:[0123]?\d)?\.?\ ?(?:Januar|Februar|März|April|Mai|Juni|Juli|August|September|Oktober|November|Dezember)\ ?(?:\d+))[ .,:;)†]/, tmp);   // Datum finden
	         if (gebDatum == "") // dritter Versuch, Jahr vor Christi suchen
	            gebDatum = extrahiere(/(?:\*|geb\.|geboren|von).{0,15}?(\d+\ (?:v\.\ Chr\.|v\.\ u\.\ Z\.))[ .,:;)†]/, tmp);   // Datum finden
	         if (gebDatum == "") // vierter Versuch, nur Jahr (n. Chr.) suchen
	            gebDatum = extrahiere(/(?:\*|geb\.|geboren|von).{0,15}?(\d+)[ .,:;)†]/, tmp);   // Datum finden
	         if (gebOrt == "")
	            gebOrt = extrahiere(/(?:\*|geb\.|geboren|von)\ ?\d[^;\-†]*\d\d\ (?:i[nm]|\;|\,)\ ([^\.;)]*?)[.;)†]\ ./, tmp);  // Ort finden
	     }
	 }
 
     // Sterbedaten suchen wenn nötig
     if ((!persDatenErl) || (persDatenErl && !sterbeKatErl)) {
         strDatenPos = quellTextRein.search(/(\-\ ?\d\d+|\|gestorben\ |starb\ |bis\ )/);
         if ((strDatenPos < 365) && (strDatenPos != -1)) {
             tmp = quellTextRein.slice(strDatenPos, 450);
             if (sterbeDatum.search(/\d\d\.?\ ?(?:Januar|Februar|März|April|Mai|Juni|Juli|August|September|Oktober|November|Dezember|(?:[012]\d|3[01]\.))\ ?(?:\d+)/) == -1) // bisheriges Datum ok?
                 sterbeDatum = extrahiere(/(?:\-|\|\&dagger;|gestorben\ |starb\ |bis\ )\ ?(\d[^;\-]*?\d\d)[ .,:;)]/, tmp);     // Datum finden
             if (tmp.search(/(?:\|\&dagger;|gestorben\ |starb\ |bis\ )\ *.*?ebenda.*?(?:\)[,;. ]|[,;. ]\ )/) != -1) // TODO: begrenzung der suche
                 sterbeOrt = gebOrt;   // "ebenda"
             else
                 sterbeOrt = extrahiere(/(?:\-|\|\&dagger;|gestorben\ |starb\ |bis\ )\ *?.*?\d\d[,; \)]?\ i[nm]\ ([^,;\.\)]*?)(?:\)[,;. ]|[,;. ]\ )/, tmp);  // Ort finden
         }
     }
 
     // Cursor vor erste "[[Kategorie:", vor {{DEFAULTSORT}} bzw. ersten Interwikilink setzen, sonst Ende
     tmpPos = document.editform.wpTextbox1.value.search(/\[\[(?:Kategorie|Category)\:/);
     if (tmpPos == -1) {
     	 tmpPos = document.editform.wpTextbox1.value.search(/\{\{DEFAULTSORT\:/);
     	 if (tmpPos == -1)
     	    tmpPos = document.editform.wpTextbox1.value.search(/\[\[(als|ar|cs|da|el|en|es|fi|fr|fy|he|hsb|hu|it|ja|ksh|la|lb|nds|nl|no|pl|pt|ru|sk|sl|sv|tr|zh)\:/);
     	 tmpPos = (tmpPos == -1 ? quellText.length : tmpPos);
     }
     document.editform.wpTextbox1.selectionStart = tmpPos;
 
     // in Artikel einfügen
     if (!defaultSortErl && (nameSort != wgTitle))
         insertTags('\n{{DEFAULTSORT:'+ nameSort +'}}\n','','');
     if (!geschlKatErl) {
         if (geschlecht == "w")
             insertTags('[[Kategorie:Frau]]\n','','');
         else  // auch wenn es kein Mann ist, ist die Wahrscheinlichkeit hoch, dass es trotzdem stimmt
             insertTags('[[Kategorie:Mann]]\n','','');
     }
     if ((!gebKatErl) && (gebDatum != ''))
         insertTags('[[Kategorie:Geboren '+ extrahiere(/(\d+)$/, gebDatum) +']]\n','','');
     if ((!sterbeKatErl) && (sterbeDatum != ''))
        insertTags('[[Kategorie:Gestorben '+ extrahiere(/(\d+)$/, sterbeDatum) +']]\n','','');
     if (staat != '')       // Angehörigkeit ist klar
        insertTags('[[Kategorie:' + staat + ']]\n', '', '');
 
     if (!persDatenErl) {
     	  // Cursor vor Interwikilinks setzen
     	  tmpPos = document.editform.wpTextbox1.value.search(/\[\[(als|ar|cs|da|el|en|es|fi|fr|fy|he|hsb|hu|it|ja|ksh|la|lb|nds|nl|no|pl|pt|ru|sk|sl|sv|tr|zh)\:/);
     	  if (tmpPos != -1)
              document.editform.wpTextbox1.selectionStart = tmpPos;
          insertTags('\n{{Personendaten\n'+
                 '|NAME=' + name + '\n'+
                 '|ALTERNATIVNAMEN='+ alias +'\n'+
                 '|KURZBESCHREIBUNG=' + beschreibung + '\n'+
                 '|GEBURTSDATUM=' + gebDatum + '\n'+
                 '|GEBURTSORT=' + gebOrt + '\n'+
                 '|STERBEDATUM=' + sterbeDatum + '\n'+
                 '|STERBEORT=' + sterbeOrt + '\n}}\n','','');
     }
 
     //andere Kategorien glätten: da {{DEFAULTSORT drin ist, kann die klassische Sortiervorgabe entfernt werden
     quellText = document.editform.wpTextbox1.value;
     tmp = quellText.replace(/\[\[(?:Kategorie|Category)\:([^|\]]*?)\|[^\]]*\]\]/gi, "[[Kategorie:$1]]");
     if (quellText != tmp)
         // nur zuweisen bei Aenderungen, da der Fokus verloren geht
         document.editform.wpTextbox1.value = tmp;
     document.editform.wpSummary.value += " +Personendaten";
     document.editform.wpTextbox1.focus();
 }
 
  /*
   * gibt die erste zu speichernde Klammer des regulaeren Ausdrucks aus also "$1"
   */
  function extrahiere(regEx, text) {
      return (regEx.exec(text) == null ? "" : regEx.exec(text)[1]);
  }
 // </nowiki>


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -