Benutzerin:Knopfkind/bksfix.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
// von [[Benutzer:Aktionsheld/bksfix.js]] übernommen und teilweise abgewandelt
//
// fix von bks-fehlern
// Features:
//
// C&P aus Personenartikeln nach BKS werden modifiziert:
// Beispiel: Thomas Andrews (* 19. Dezember 1813; † 26. November 1885 in Belfast) war ein irischer Physiker und Chemiker
// wird zu: Thomas Andrews (1813–1885), irischer Physiker und Chemiker
// Vorsicht: Bekannte Bugs bei Namensträgern mit Zweitnamen August und ein-/zweistelligen Zahlen mit Punkt dahinter
//
// Fixes:
// Korrekte Formatierung von "Siehe auch" aus Überschriften/Kursivschreibung: '''Siehe auch:'''
// Weblinks-Abschnitt -> Siehe auch
// Kategorie BKS entfernen
// Aufzählungszeichen: # -> *
// Punkte entfernen vor Zeilenumbrüchen
// Semikola in Kommata innerhalb einer Aufzählung, am Aufzählungsende entfernen <- funktioniert in einigen Fällen nicht korrekt
// Schreibfaulenabkürzungen ersetzen (BKS/BKH ausschreiben)
// Persönlichkeiten -> Personen (.. Name folgender Persönlichkeiten)
// Kursiv + Fett -> Fett (''''' -> ''')
// Zu viele Leerzeilen: 3 und mehr -> 2
// [[Abkürzung]] -> Abkürzung
// → -> , siehe
// (Leerzeichen und Zeilenumbrüche am Artikelende ohne folgenden Text) verursacht Fehler
function BKSfix()
{ var tv = document.editform.wpTextbox1.value;
/* ============================== C&P von Daten entfernen ============================== */
/* ======= Teil zwischen Name und Klammer ==== */
// "]], ("; "]](", "]],(" -> "]] ("
tv = tv.replace(/\]\]\,\s\(/g, "]] (");
tv = tv.replace(/\]\]\(/g, "]] (");
tv = tv.replace(/\]\]\,\(/g, "]] (");
/* ======= Teil zwischen Klammer und Beschreibung ==== */
//dddd) deutscher; dddd),deutscher; dddd)deutscher -> dddd), deutscher
tv = tv.replace(/(\d{3,4})\)\s(\w{1})/g, "$1), $2");
tv = tv.replace(/(\d{3,4})\)\,(\w{1})/g, "$1), $2");
tv = tv.replace(/(\d{3,4})\)(\w{1})/g, "$1), $2");
// US-Amerikanisch[e/er/es] bzw US-amerikanisch[e/er/es] -> amerikanisch[e/er/es] nach [[Wikipedia:Namenskonventionen/Staaten#V]]
// tv = tv.replace(/US-amerikanisch/g, "amerikanisch");
// tv = tv.replace(/US-Amerikanisch/g, "amerikanisch");
/* ======= 1) Tag und Monat entfernen ==== */
// Beispiel: "Peter (* 1. Februar 1966 in Boulogne-Billancourt; † 19. Januar 1948 in Roquefort-la-Bédoule, Frankreich)"
// wird zu: "Peter (1966–1948)"
tv = tv.replace(/(\d{1,2})\./g, "");
// Zahl jetzt entfernt, übrig: "Peter (* Februar 1966 in Boulogne-Billancourt; † . Januar 1948 in Roquefort-la-Bédoule, Frankreich)"
tv = tv.replace(/\s\Jänner\s/g, "");
tv = tv.replace(/\s\Januar\s/g, "");
tv = tv.replace(/\s\Februar\s/g, "");
tv = tv.replace(/\s\März\s/g, "");
tv = tv.replace(/\s\April\s/g, "");
tv = tv.replace(/\s\Mai\s/g, "");
tv = tv.replace(/\s\Juni\s/g, "");
tv = tv.replace(/\s\Juli\s/g, "");
tv = tv.replace(/\s\August\s/g, "");
tv = tv.replace(/\s\September\s/g, "");
tv = tv.replace(/\s\Oktober\s/g, "");
tv = tv.replace(/\s\November\s/g, "");
tv = tv.replace(/\s\Dezember\s/g, "");
// Fehler korrigieren
// (*1982 -> (* 1902
tv = tv.replace(/\*(\d{3,4})/g, "* $1");
// ( * 1982 -> (* 1902
tv = tv.replace(/\s\*\s(\d{3,4})/g, "* $1");
// zusätzliche Eintragungen in der Klammer vor Geburtsdatum entfernen
// sdfas sdfas (''auch: kdaaö sfasfdsf'', * 1258 in....
// tv = tv.replace(/\]\]\s\((\D{2,40})\*\s(\d{3,4})/g, "]] (* $2");
// ^ hat sich nicht bewährt: .. Müller]] (auch: sdfas Molitor, *1544)... alternative Namen sollten drin bleiben. Besser:
tv = tv.replace(/\]\]\s\(\*\s(\d{3,4})/g, "]] (* $1");
/* ======= 2) Geburtsort entfernen ==== */
// "._Monat_" raus, übrig: "Peter (* 1966 in Boulogne-Billancourt; † 1948 in Roquefort-la-Bédoule, Frankreich)"
// ersetze nun "_in [..]†_" durch "–" (Halbgeviertstrich)
tv = tv.replace(/\sin\s(\D{2,})\s†\s/g, "–");
//auch wenn kein Geburtsort eingetragen ist:
tv = tv.replace(/(\d{3,4})(\D{1,3})\s†\s/g, "$1–");
// jetzt übrig: "Peter (* 1966–1948 in Roquefort-la-Bédoule, Frankreich)"
// ersetze nun "*_dddd–dddd" durch "dddd–dddd"
tv = tv.replace(/\*\s(\d{3,4})\–(\d{3,4})/g, "$1–$2");
/* ======= 3) Sterbeort entfernen ==== */
// jetzt übrig: "Peter (1966–1948 in Roquefort-la-Bédoule, Frankreich)"
// entferne nun "_in/bei/auf[..])"
tv = tv.replace(/(\d{3,4})\sin\s(\D{2,50})\)/g, "$1)");
tv = tv.replace(/(\d{3,4})\sbei\s(\D{2,50})\)/g, "$1)");
tv = tv.replace(/(\d{3,4})\sauf\s(\D{2,50})\)/g, "$1)");
// entferne "ebenda" ..1982 ebenda)
tv = tv.replace(/(\d{3,4})\sebenda\)/g, "$1)");
// im Idealfall bleibt: "Peter (1966–1948)"
/* ======= 4) Teil nach der Klammer ==== */
// "1456)(,) ist/war ein(e) " -> "1456), "
tv = tv.replace(/(\d{3,4})\)\sist\seine/g, "$1),");
tv = tv.replace(/(\d{3,4})\)\sist\sein/g, "$1),");
tv = tv.replace(/(\d{3,4})\)\swar\seine/g, "$1),");
tv = tv.replace(/(\d{3,4})\)\swar\sein/g, "$1),");
tv = tv.replace(/(\d{3,4})\),\sist\seine/g, "$1),");
tv = tv.replace(/(\d{3,4})\),\sist\sein/g, "$1),");
tv = tv.replace(/(\d{3,4})\),\swar\seine/g, "$1),");
tv = tv.replace(/(\d{3,4})\),\swar\sein/g, "$1),");
/* ============================== andere fixes ============================== */
//keine "Siehe auch"-Überschriften, kursiv -> fett
tv = tv.replace(/={2,5}\s?(S|s)iehe (A|a)uch:?\s?={2,5}/g, "'''Siehe auch:'''");
tv = tv.replace(/''(S|s)iehe (A|a)uch:?''/g, "'''Siehe auch:'''");
tv = tv.replace(/''''(S|s)iehe (A|a)uch:?''''/g, "'''Siehe auch:'''");
tv = tv.replace(/\n(S|s)iehe (A|a)uch:?/g, "'''Siehe auch:'''");
// Weblinks-Abschnitt -> Siehe auch
tv = tv.replace(/==\s?Weblinks:?\s?==/g, "'''Siehe auch:'''");
//Kat. BKS entfernen
tv = tv.replace(/\[\[Kategorie:Begriffsklärung\]\]/g, "");
//Aufzählungszeichen: #_ -> *_ vor Leerzeichen und [[
tv = tv.replace(/#(\s|\[)/g, "* "); //
// Punkte entfernen; Nur vor Umbrüchen sinnvoll, z.b. nicht bei [[Peter A. Müller]]
tv = tv.replace(/\.(\n)/g, "$1");
// Semikola in Kommata innerhalb einer Aufzählung, am Aufzählungsende entfernen
tv = tv.replace(/;\s/g, ", ");
// Kursiv + Fett -> Fett
tv = tv.replace(/'''''/g, "'''");
// Zu viele Leerzeilen: 3 und mehr -> 2 (3 leerzeilen=4*n)
tv = tv.replace(/\n{4,}/g, "\n\n\n");
// funktioniert nicht: tv = tv.replace(/;(\n)/g, "$1");
// Schreibfaulenabkürzung ersetzen
tv = tv.replace(/\{\{BKS\}\}/g, "{{Begriffsklärung}}");
tv = tv.replace(/\{\{BKH\}\}/g, "{{Begriffsklärungshinweis}}");
// ": siehe" -> , siehe
tv = tv.replace(/:\ssiehe/g, ", siehe");
// "siehe[[" -> "siehe [["
tv = tv.replace(/siehe\[\[/g, "siehe [[");
// Leerzeichen und Zeilenumbrüche am Artikelende ohne folgenden Text
// tv = tv.replace(/\n(\n*|\s*)/g, ""); // verursacht Fehler
//persönlichkeiten -> personen
tv = tv.replace(/ersönlichkeiten/g, "ersonen");
//[[Abkürzung]] -> Abkürzung
tv = tv.replace(/\[\[Abkürzung\]\]/g, "Abkürzung");
//→ -> ", siehe"
tv = tv.replace(/→/g, ", siehe");
//Halbgeviertstrich
tv = tv.replace(/\*([12][0-9]{3})/g, "* $1");
tv = tv.replace(/†([12][0-9]{3})/g, "† $1");
tv = tv.replace(/([^-0-9][12][0-9]{3})—/g, "$1–");
tv = tv.replace(/([^-0-9][12][0-9]{3})-/g, "$1–");
tv = tv.replace(/([^-0-9][12][0-9]{3})−/g, "$1–");
tv = tv.replace(/([^-0-9][12][0-9]{3}) — /g, "$1–");
tv = tv.replace(/([^-0-9][12][0-9]{3}) - /g, "$1–");
tv = tv.replace(/([^-0-9][12][0-9]{3}) − /g, "$1–");
tv = tv.replace(/([^-0-9][12][0-9]{3}) – /g, "$1–");
/* ============================== ausgabe ============================== */
document.editform.wpTextbox1.value = tv;
if (wgUserName != "BLueFiSH.as") {document.editform.wpDiff.click();}
}