User:Darkking3/markup.js

// führt allgemeine Ersetzungen und Rechtschreibänderungen durch

// FUNKTION !!!NICHT!!! OHNE NACHKONTROLLE ÜBER "Änderungen zeigen" AUSFÜHREN !!!

function ReplaceMarkup { var tv = document.editform.wpTextbox1.value; /* ============================== unnötige Leerzeichen ============================== */ // Tabulatoren im Quelltext in Leerzeichen verwandeln tv = tv.replace(/\t/g, " ");

// mehrfache Leerzeichen auf einzelne reduzieren. tv = tv.replace(/ +/g, " "); // unnötige Leerzeichen an Zeilenenden entfernen tv = tv.replace(/ \n/g, "\n"); // mehrfache Leerzeilen auf einzelne reduzieren. tv = tv.replace(/\/gi, "\n\n");  tv = tv.replace(/\<\/p\>/gi, "\n\n"); tv = tv.replace(/\n{3,}/g, "\n\n"); /* ============================== Vandalismusüberbleibsel entfernen ============================== */ tv = tv.replace(/\'\'\'Fetter\sText\'\'\'/g, ""); tv = tv.replace(/\'\'Kursiver\sText\'\'/g, ""); tv = tv.replace(/\[\[Link\-Text\]\]/g, ""); tv = tv.replace(/\[\[Verweistext\]\]/g, ""); tv = tv.replace(/\[http\:\/\/www\.beispiel\.de\sLink\-Text\]/g, ""); tv = tv.replace(/\=\=\sÜberschrift\s\=\=/g, ""); tv = tv.replace(/\[\[Bild\:Beispiel\.jpg\]\]/g, ""); tv = tv.replace(/\[\[Media\:Beispiel\.ogg\]\]/g, ""); tv = tv.replace(/\Formel\shier\seinfügen\<\/math\>/g, ""); tv = tv.replace(/Formel\shier\seinfügen/g, ""); tv = tv.replace(/\Unformatierten\sText\shier\seinfügen\<\/nowiki\>/g, ""); tv = tv.replace(/Unformatierten\sText\shier\seinfügen/g, ""); /* ============================== Überschriften formatieren ============================== */ // vor und hinter dem Überschriftstext mit Leerzeichen auffüllen tv = tv.replace(/\n=====/g, "\n ");   tv = tv.replace(/=====\n/g, " \n"); tv = tv.replace(/\n====/g, "\n ");   tv = tv.replace(/====\n/g, " \n"); tv = tv.replace(/\n===/g, "\n ");    tv = tv.replace(/===\n/g, " \n"); tv = tv.replace(/\n==/g, "\n ");     tv = tv.replace(/==\n/g, " \n"); tv = tv.replace(/\n /g, "\n===== ");  tv = tv.replace(/ \n/g, " =====\n"); tv = tv.replace(/\n /g, "\n==== ");  tv = tv.replace(/ \n/g, " ====\n"); tv = tv.replace(/\n /g, "\n=== ");   tv = tv.replace(/ \n/g, " ===\n"); tv = tv.replace(/\n /g, "\n== ");    tv = tv.replace(/ \n/g, " ==\n"); // unnötige Fettschreibung in Überschriften entfernen tv = tv.replace(/== /g, "== ");  tv = tv.replace(/ ==/g, " =="); // Doppelpunkte werden nicht in Überschriften verwendet tv = tv.replace(/: ==/g, " =="); // Weblinks immer als Weblinks nicht als Externe Links, Links oder Webseiten tv = tv.replace(/== Externe Links ==/gi, "== Weblinks =="); tv = tv.replace(/== external links ==/gi, "== Weblinks =="); tv = tv.replace(/== Links ==/gi, "== Weblinks =="); tv = tv.replace(/== Webseiten ==/gi, "== Weblinks =="); tv = tv.replace(/== Websites ==/gi, "== Weblinks =="); tv = tv.replace(/== Weblink ==/gi, "== Weblinks =="); /* ==================== "proaktiv" Selbstlinks vermeiden =================== */ reg = new RegExp("\\[\\["+wgTitle+"\\]\\]", "g");    // damit lässt sich aber nicht "blaaa" finden // Links werden zu fett umgewandelt, das in vermutlich >80% der Fälle das Lemma nur 1x (am Anfang) in Klammern steht. tv = tv.replace(reg, "\'\'\'"+wgTitle+"\'\'\'"); /* ============================== Sonstiges ============================== */ // Berliner zu Berliner, Berliner zu Berliner // very special Dank an Benutzer:D!! tv = tv.replace(/\[\]+?)[ \t]*\|[ \t]*([^\+?)[ \t]*\]\]/g, "$2"); tv = tv.replace(/\[\[([^|\]]+)\|\1([^|\]]+)\]\]/g, "$1$2"); //doppeltes Gänsefüßchen reduziert tv = tv.replace(/\"\"/g, "\""); // entfernen da unnötig  tv = tv.replace(/\|\|thumb\|/g, "|thumb|"); // welche Idis machen sowas...  tv = tv.replace(/\|thumb\|\|/g, "|thumb|"); // noch mehr Idis...  tv = tv.replace(/style=\"\"/g, "");  tv = tv.replace(/<\!-- GEOnet -->/g, "");  tv = tv.replace(/\{\{Vorlage: /gi, "{{");  tv = tv.replace(/\{\{Vorlage:/gi, "{{");  // Leerzeichen vor und hinter doppelten Pipes, bessere Editierbarkeit in Tabellen  tv = tv.replace(/\|\|/g, " || ");  // im Artikelraum (zumindest nicht in Städteartikeln) nicht zu verwendende  und entfernen  tv = tv.replace(//gi, "");   tv = tv.replace(/<\/tt>/gi, "");  tv = tv.replace(/ /gi, "");   tv = tv.replace(/<\/code>/gi, "");  // die verschiedensten Formen der Zeilenumbrüche durch korrekte ersetzen  tv = tv.replace(/ /gi, " ");  tv = tv.replace(/<\/br>/gi, " ");   tv = tv.replace(//gi, " ");  tv = tv.replace(/<\/br\s>/gi, " "); tv = tv.replace(//gi, " "); // korrekte Groß-Schreibung, deutsche Namen für Namensräume  tv = tv.replace(/\{\{koordinate/g, "{{Koordinate");  tv = tv.replace(/\{\{Koordinate_Text/g, "{{Koordinate Text");  tv = tv.replace(/\{\{Koordinate_Artikel/g, "{{Koordinate Artikel");  tv = tv.replace(/\{\{Koordinate_Text_Artikel/g, "{{Koordinate Text Artikel");  tv = tv.replace(/\[\[kategorie:/g, "[[Kategorie:");  tv = tv.replace(/\[\[Kategorie: /g, "[[Kategorie:");  tv = tv.replace(/\[\[Kategorie:ge/g, "[[Kategorie:Ge");  tv = tv.replace(/\[\[image:/g, "[[Image:");  tv = tv.replace(/\[\[Image: /g, "[[Image:");  // unnötiges rausschmeißen (thumb ist ohne Angabe immer right)  tv = tv.replace(/\|\|thumb\|/g, "|thumb|");  tv = tv.replace(/\|right\|thumb\|/g, "|thumb|");  tv = tv.replace(/\|thumb\|right\|/g, "|thumb|");  tv = tv.replace(/px\|right\|/g, "px|");  tv = tv.replace(/\|left\|thumb\|/g, "|thumb|left|"); // einfach nur Reihenfolge: wie-wo  // "z.B." immer zu "zum Beispiel", etc.  tv = tv.replace(/\[\[1\. Weltkrieg/g, "[[Erster Weltkrieg|Ersten Weltkrieg");  tv = tv.replace(/\[\[2\. Weltkrieg/g, "[[Zweiter Weltkrieg|Zweiten Weltkrieg");  tv = tv.replace(/1\. Weltkrieg/g, "Ersten Weltkrieg");  tv = tv.replace(/2\. Weltkrieg/g, "Zweiten Weltkrieg");  /* [[Wikipedia:Datumskonventionen]] umsetzen */  tv = tv.replace(/\.01\.(\d{4})/g, ". January $1"); tv = tv.replace(/\.1\.(\d{4})/g, ". January $1");  tv = tv.replace(/\.02\.(\d{4})/g, ". February $1"); tv = tv.replace(/\.2\.(\d{4})/g, ". February $1");  tv = tv.replace(/\.03\.(\d{4})/g, ". March $1"); tv = tv.replace(/\.3\.(\d{4})/g, ". March $1");  tv = tv.replace(/\.04\.(\d{4})/g, ". April $1"); tv = tv.replace(/\.4\.(\d{4})/g, ". April $1");  tv = tv.replace(/\.05\.(\d{4})/g, ". May $1"); tv = tv.replace(/\.5\.(\d{4})/g, ". May $1");  tv = tv.replace(/\.06\.(\d{4})/g, ". June $1"); tv = tv.replace(/\.6\.(\d{4})/g, ". June $1");  tv = tv.replace(/\.07\.(\d{4})/g, ". July $1"); tv = tv.replace(/\.7\.(\d{4})/g, ". July $1");  tv = tv.replace(/\.08\.(\d{4})/g, ". August $1"); tv = tv.replace(/\.8\.(\d{4})/g, ". August $1");  tv = tv.replace(/\.09\.(\d{4})/g, ". September $1"); tv = tv.replace(/\.9\.(\d{4})/g, ". September $1");  tv = tv.replace(/\.10\.(\d{4})/g, ". October $1");  tv = tv.replace(/\.11\.(\d{4})/g, ". November $1");   tv = tv.replace(/\.12\.(\d{4})/g, ". December $1");   tv = tv.replace(/(\s|\0(\d)\.\s/g, "$1$2. ");  // 01. und 02. etc. zu 1. und 2.

tv = tv.replace(/Jh\.\)\]\]/g, "JJJJHHHH.)]]"); // workaround für "Kategorie:Britisches Königshaus (20. Jh.)" tv = tv.replace(/Jh\.\)\|/g, "JJJJHHHH.)|"); // workaround für "Kategorie:Britisches Königshaus (20. Jh.)" tv = tv.replace(/Jh\.\|/g, "JJJJHHHH.|"); // workaround für Link "Britisches Königshaus (20. Jh.)|blablub" tv = tv.replace(/\.Jh\./g, ". Jahrhundert"); tv = tv.replace(/\.\sJh\./g, ". Jahrhundert"); tv = tv.replace(/\.Jhd\./g, ". Jahrhundert"); tv = tv.replace(/\.\sJhd\./g, ". Jahrhundert"); tv = tv.replace(/JJJJHHHH\.\)\]\]/g, "Jh.)]]"); // workaround für "Kategorie:Britisches Königshaus (20. Jh.)" tv = tv.replace(/JJJJHHHH\.\)\|/g, "Jh.)|"); // workaround für "Kategorie:Britisches Königshaus (20. Jh.)" tv = tv.replace(/JJJJHHHH\.\|/g, "Jh.|"); // workaround für Link "Britisches Königshaus (20. Jh.)|blablub" // diverses tv = tv.replace(/\| \]\]/g, "|&&]]"); tv = tv.replace(/\[\[ /g, " ]" tv = tv.replace(/ \]\]/g, ""); tv = tv.replace(/\|\&\&\]\]/g, "| ]]"); // rückfix für z.b. "[Kategorie:Eis| ]" tv = tv.replace(/\( /g, "\(");   tv = tv.replace(/ \)/g, "\)"); tv = tv.replace(/\&auml\;/g, "ä"); tv = tv.replace(/\&Auml\;/g, "Ä"); tv = tv.replace(/\&ouml\;/g, "ö"); tv = tv.replace(/\&Ouml\;/g, "Ö"); tv = tv.replace(/\&uuml\;/g, "ü"); tv = tv.replace(/\&Uuml\;/g, "Ü"); tv = tv.replace(/\&szlig\;/g, "ß"); tv = tv.replace(/\&dagger\;/g, "†"); tv = tv.replace(/\&ndash\;/g, "–"); tv = tv.replace(/\&mdash\;/g, "—"); tv = tv.replace(/\&rarr\;/g, "→"); tv = tv.replace(/\&larr\;/g, "←"); tv = tv.replace(/\&sup2\;/g, "²"); tv = tv.replace(/\&sup3\;/g, "³"); tv = tv.replace(/\&raquo\;/g, "»"); tv = tv.replace(/\&laquo\;/g, "«"); tv = tv.replace(/\&rt\;/g, ">"); tv = tv.replace(/\&lt\;/g, "<"); tv = tv.replace(/\&hellip\;/g, "…"); tv = tv.replace(/\.\.\./g, "…"); tv = tv.replace(/(\d)\&nbsp\;\%/g, "$1 %"); // % braucht kein nbsp mehr, macht Mediawiki automatisch wenn leerzeichen davor tv = tv.replace(/\%27/g, "'"); tv = tv.replace(/\%2C/g, ","); tv = tv.replace(/\.2C/g, ","); tv = tv.replace(/\.3B/g, ";"); //tv = tv.replace(/(\D)\.28/g, "$1("); // führt zu fehlersetzungen //tv = tv.replace(/(\D)\.29/g, "$1)"); // führt zu fehlersetzungen tv = tv.replace(/\.C3\.A4/g, "ä"); tv = tv.replace(/\.C3\.B6/g, "ö"); tv = tv.replace(/\.C3\.BC/g, "ü"); tv = tv.replace(/\.C3\.9F/g, "ß"); tv = tv.replace(/\%28/g, "("); tv = tv.replace(/\%29/g, ")"); tv = tv.replace(/\%C3\%A4/g, "ä"); tv = tv.replace(/\%C3\%B6/g, "ö"); tv = tv.replace(/\%C3\%BC/g, "ü"); tv = tv.replace(/\%C3\%9F/g, "ß"); tv = tv.replace(//g, "*"); tv = tv.replace(/<\/li>/g, ""); tv = tv.replace(//g, ""); tv = tv.replace(/<\/ul>/g, ""); tv = tv.replace(/\n\n/g, "\n\n"); tv = tv.replace(//g, ""); tv = tv.replace(/<\/b>/g, ""); tv = tv.replace(//g, ""); tv = tv.replace(/<\/i>/g, ""); //   (muss erstmal noch genau beobachtet werden, wie fehlerfrei das ist) if (wgUserName == "Darkking3") { // Setzen geschützter Leerzeichen tv = tv.replace(/(\d)[\s]{0,1}(m|g|t|mm|cm|km|kg|ha)(\,|\.|\n|\)|\s|²|³)/g, "$1 $2$3"); // Ausnahmen rückgängig machen  tv = tv.replace(/\&nbsp\;\|/g, "|");

// Tausenderpunkte (genaue Nachkontrolle erforderlich) // für Millionen auch amerikanische Tausenderkomma ersetzen (bei 100.000ern sind Nachkommastellen unwahrscheinlich //tv = tv.replace(/(\d{1,3})[\s|,|\&nbsp\;]{1,6}(\d{3})[\s|,|\&nbsp\;]{1,6}(\d{3})/g, "$1.$2.$3");  // bei 100.000ern kein Komma ersetzen, da bei 1000ern dort Nachkommastellen wahrscheinlich  //tv = tv.replace(/(\d{1,3})[\s|\&nbsp\;]{1,6}(\d{3})/g, "$1.$2"); }  // entplenken  tv = tv.replace(/ \,/g, ", ");  tv = tv.replace(/ \./g, ". ");  tv = tv.replace(/ \;/g, ";");  tv = tv.replace(/ \:/g, ":");  // und nochmal das vom Anfang  tv = tv.replace(/ +/g, " ");  tv = tv.replace(/\n{3,}/g, "\n\n"); // TODO: alert bei diversen Sachen, die von Hand korrigiert werden müssen. // TODO: alert bei Koordinate mit 60er Sekunden! // TODO: wenn nur Überschriften Ebene 3/Ebene 1 vorhanden, und keine Ebene 2, alle Ebenen eins rauf/runter setzen  document.editform.wpTextbox1.value = tv; if (wgUserName != "BLueFiSH.as") {document.editform.wpDiff.click;} }