Benutzerin:Knopfkind/bksfix.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
  • 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();}
}