Benutzer:Markscheider/markup.js
Erscheinungsbild
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
// führt allgemeine Ersetzungen und Rechtschreibänderungen durch
// FUNKTION !!!NICHT!!! OHNE NACHKONTROLLE ÜBER "Änderungen zeigen" AUSFÜHREN !!!
function ReplaceMarkupMS()
{ 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(/\<p\>/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(/\[\[Datei\:Beispiel\.jpg\]\]/g, "");
tv = tv.replace(/\[\[Media\:Beispiel\.ogg\]\]/g, "");
tv = tv.replace(/\<math\>Formel\shier\seinfügen\<\/math\>/g, "");
tv = tv.replace(/Formel\shier\seinfügen/g, "");
tv = tv.replace(/\<nowiki\>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<h5>"); tv = tv.replace(/=====\n/g, "<sh5>\n");
tv = tv.replace(/\n====/g, "\n<h4>"); tv = tv.replace(/====\n/g, "<sh4>\n");
tv = tv.replace(/\n===/g, "\n<h3>"); tv = tv.replace(/===\n/g, "<sh3>\n");
tv = tv.replace(/\n==/g, "\n<h2>"); tv = tv.replace(/==\n/g, "<sh2>\n");
tv = tv.replace(/\n<h5>/g, "\n===== "); tv = tv.replace(/<sh5>\n/g, " =====\n");
tv = tv.replace(/\n<h4>/g, "\n==== "); tv = tv.replace(/<sh4>\n/g, " ====\n");
tv = tv.replace(/\n<h3>/g, "\n=== "); tv = tv.replace(/<sh3>\n/g, " ===\n");
tv = tv.replace(/\n<h2>/g, "\n== "); tv = tv.replace(/<sh2>\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" [[Wikipedia:Selbstlinks]] vermeiden =================== */
reg = new RegExp("\\[\\["+ mw.RegExp.escape(mw.config.get('wgTitle'))+"\\]\\]", "g"); // damit lässt sich aber nicht "[[wgTitle|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, "\'\'\'"+mw.config.get('wgTitle')+"\'\'\'");
/* ============================== Sonstiges ============================== */
// [[Hamburg | Berliner]] zu [[Hamburg|Berliner]], [[Berlin|Berliner]] zu [[Berlin]]er
// [[Commerzbank|Commerzbank AG]] aber soll so bleiben
// very special Dank an Benutzer:D!!
tv = tv.replace(/\[\[(?!Kategorie:)[ \t]*([^\]|]+?)[ \t]*\|[ \t]*([^\] \t]+?)[ \t]*\]\]/g, "[[$1|$2]]");
tv = tv.replace(/\[\[([^|\]]+)\|\1([^|\] \t]+)\]\]/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(/\|\|miniatur\|/g, "|miniatur|");
tv = tv.replace(/\|miniatur\|\|/g, "|miniatur|");
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 <tt> und <code> entfernen
tv = tv.replace(/<tt>/gi, ""); tv = tv.replace(/<\/tt>/gi, "");
tv = tv.replace(/<code>/gi, ""); tv = tv.replace(/<\/code>/gi, "");
// die verschiedensten Formen der Zeilenumbrüche durch korrekte ersetzen
tv = tv.replace(/<br>/gi, "<br />");
tv = tv.replace(/<\/br>/gi, "<br />"); tv = tv.replace(/<br\/>/gi, "<br />");
tv = tv.replace(/<\/br\s>/gi, "<br />"); tv = tv.replace(/<br\/\s>/gi, "<br />");
// 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(/\[\[category:/gi, "[[Kategorie:");
tv = tv.replace(/\[\[kategorie:/g, "[[Kategorie:");
tv = tv.replace(/\[\[Kategorie: /g, "[[Kategorie:");
tv = tv.replace(/\[\[Kategorie:ge/g, "[[Kategorie:Ge");
tv = tv.replace(/\[\[File:/gi, "[[Datei:");
tv = tv.replace(/\[\[datei:/g, "[[Datei:");
tv = tv.replace(/\[\[Datei: /g, "[[Datei:");
// oder jetzt alles auf Datei: ?
tv = tv.replace(/\[\[Image:/gi, "[[Bild:");
tv = tv.replace(/\[\[bild:/g, "[[Bild:");
tv = tv.replace(/\[\[Bild: /g, "[[Bild:");
// 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
// und dasselbe in grün
tv = tv.replace(/\|\|miniatur\|/g, "|miniatur|");
tv = tv.replace(/\|right\|miniatur\|/g, "|miniatur|");
tv = tv.replace(/\|miniatur\|right\|/g, "|miniatur|");
tv = tv.replace(/\|left\|miniatur\|/g, "|miniatur|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, ". Januar $1"); tv = tv.replace(/\.1\.(\d{4})/g, ". Januar $1");
tv = tv.replace(/\.02\.(\d{4})/g, ". Februar $1"); tv = tv.replace(/\.2\.(\d{4})/g, ". Februar $1");
tv = tv.replace(/\.03\.(\d{4})/g, ". März $1"); tv = tv.replace(/\.3\.(\d{4})/g, ". März $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, ". Mai $1"); tv = tv.replace(/\.5\.(\d{4})/g, ". Mai $1");
tv = tv.replace(/\.06\.(\d{4})/g, ". Juni $1"); tv = tv.replace(/\.6\.(\d{4})/g, ". Juni $1");
tv = tv.replace(/\.07\.(\d{4})/g, ". Juli $1"); tv = tv.replace(/\.7\.(\d{4})/g, ". Juli $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, ". Oktober $1");
tv = tv.replace(/\.11\.(\d{4})/g, ". November $1");
tv = tv.replace(/\.12\.(\d{4})/g, ". Dezember $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, "[["); // fix für z.b. "[Kategorie:Eis| ]"
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(/\ä\;/g, "ä");
tv = tv.replace(/\Ä\;/g, "Ä");
tv = tv.replace(/\ö\;/g, "ö");
tv = tv.replace(/\Ö\;/g, "Ö");
tv = tv.replace(/\ü\;/g, "ü");
tv = tv.replace(/\Ü\;/g, "Ü");
tv = tv.replace(/\ß\;/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(/\²\;/g, "²");
tv = tv.replace(/\³\;/g, "³");
tv = tv.replace(/\»\;/g, "»");
tv = tv.replace(/\«\;/g, "«");
tv = tv.replace(/\&rt\;/g, ">");
tv = tv.replace(/\<\;/g, "<");
tv = tv.replace(/\&hellip\;/g, "…");
tv = tv.replace(/\.\.\./g, "…");
tv = tv.replace(/(\d)\ \;\%/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(/<li>/g, "*"); tv = tv.replace(/<\/li>/g, "");
tv = tv.replace(/<ul>/g, ""); tv = tv.replace(/<\/ul>/g, "");
tv = tv.replace(/<br \/>\n\n/g, "\n\n");
tv = tv.replace(/<b>/g, "'''"); tv = tv.replace(/<\/b>/g, "'''");
tv = tv.replace(/<i>/g, "''"); tv = tv.replace(/<\/i>/g, "''");
// (muss erstmal noch genau beobachtet werden, wie fehlerfrei das ist)
if (mw.config.get('wgUserName') == "BLueFiSH.as")
{
// 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(/\ \;\|/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|,|\ \;]{1,6}(\d{3})[\s|,|\ \;]{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|\ \;]{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 (mw.config.get('wgUserName') != "BLueFiSH.as") {document.editform.wpDiff.click();}
}