Benutzer:PerfektesChaos/js/WikiSyntaxTextMod/usage/replace/plain

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

WikiSyntaxTextModBenutzungErsetzungen → Allgemeiner Text

Text-Ersetzung

Benutzerdefinierte Text-Ersetzungen wirken nicht auf geschützte Bereiche – also auch nicht auf Linkziele oder Namen von Vorlagen; auch die Syntaxelemente bestimmter Vorlageneinbindungen lassen sich nicht ändern.

Definition[Bearbeiten | Quelltext bearbeiten]

In der js-Datei des Benutzers ist vor dem mw.loader.load eine Komponente des Anwendungsobjekts zu definieren:

mw.libs.WikiSyntaxTextMod.config.mod.plain = Text-Ersetzungsliste;

Text-Ersetzungsliste[Bearbeiten | Quelltext bearbeiten]

Die Text-Ersetzungsliste hat dabei die Form

[
[RegExp-1, Ersetzungstext-1],
[RegExp-2, Ersetzungstext-2],
… … …
[RegExp-n, Ersetzungstext-n]
]

Jede einzelne Ersetzung hat dabei die Form

[RegExp, Ersetzungstext]

oder auch

[RegExp, Ersetzungstext, flag]

Dabei sind:

  • RegExp
    Regulärer Ausdruck
  • Ersetzungstext
    zum gefundenen RegExp passender neuer Text
    Möglich ist die Ersetzung von Klammerausdrücken mit $1, $2, usw.
  • flag
    Steuerung der Suche
    Standardwert: "g" für: Globale Suche, Groß- und Kleinschreibung beachten
    Weitere Möglichkeiten:
    "" – Einmaliges Auffinden, Groß-/Kleinschreibung beachten
    "i" – Einmaliges Auffinden, Groß-/Kleinschreibung ignorieren (i = ignore case)
    "gi" – Globale Suche, Groß-/Kleinschreibung ignorieren

Die Ersetzungen erfolgen in der Reihenfolge der Definition.

Demonstrationsbeispiel[Bearbeiten | Quelltext bearbeiten]

mw.libs.WikiSyntaxTextMod  =  { config:  { lang: { },
                                           load: { },
                                           mod:  { },
                                           page: { }
                                         }
                              };

mw.libs.WikiSyntaxTextMod.config.mod.plain = [  ["h[au]nd",
                                                 "KATZE"],
                                                ["k..ze",
                                                 "Maus",
                                                 "gi"]
                                             ];

transformiert

  • HandyHandy
  • KerzeMaus
  • hundeelendMauseelend
  • SchandeScMause

Zuvor war eine leere Struktur des Anwendungsobjekts definiert worden, damit dessen Komponente .config.mod.plain zugewiesen werden kann.

Anwendungsbeispiele[Bearbeiten | Quelltext bearbeiten]

prettytable[Bearbeiten | Quelltext bearbeiten]

Die CSS-Definition prettytable ist veraltet. Sie ist in der Wirkung beinahe identisch mit wikitable. Mittels DiffPage sollte dies auffallen; hier sollte auch innegehalten und überprüft werden, ob die Gestaltung (Farben, Tabellenkopf, style, class usw.) noch zeitgemäß und beabsichtigt ist.

mw.libs.WikiSyntaxTextMod.config.mod.plain = [
   ["{\\| class=\"prettytable\\b",
    "{| class=\"wikitable"]
                                             ];

Das Pipe-Symbol | am Tabellenbeginn muss durch \\ an der Interpretation als RegExp-Syntax gehindert werden.

Das Gänsefüßchen " innerhalb des Ausdrucks muss durch einen \ vor der in " gesetzten Zeichenkette verborgen werden.

Der Ersetzungsausdruck bearbeitet einen mit einem führenden " beginnenden Attributwert. Das schließende " wird zusammen mit ggf. folgenden weiteren Parametern vom vorhandenen Text übernommen. Seit August 2012 wird sichergestellt, dass zwischen {| und dem Attributnamen immer genau ein Leerzeichen steht; außerdem ist der Wert des Attributs immer in " eingeschlossen und es können keine Leerzeichen um das Gleichheitszeichen stehen.

Nicht behandelt ist hier die Situation, dass vor der class noch eine andere Attributzuweisung stehen könnte; etwa style= (oder id= wäre möglich). style und class können zuvor mit folgender Anweisung generell vertauscht werden:

mw.libs.WikiSyntaxTextMod.config.mod.plain = [
   ["{\\|( style=\"[^\"\n]+\")( class=\"[^\"\n]+\")",
    "{|$2$1"]
                                             ];

Siehe im Übrigen: WP:Technik/Baustellen/prettytable und wikitable

Jahrzehnt mit Jahrhundert[Bearbeiten | Quelltext bearbeiten]

Es soll nicht „80er Jahre“, sondern „1980er Jahre“ geschrieben werden:

mw.libs.WikiSyntaxTextMod.config.mod.plain = [
   [" ([2-9])0'?er[- ]Jahre",
    " 19$10er Jahre"],
   [" ([2-9])0ern\\b",
    " 19$10ern"],
     
                                             ];

Das Jahrzehnt – also der Ausdruck in der Klammer – wird von $1 repräsentiert. [2-9] ist eine Ziffer von 2 bis 9.

Immer schon falsch war das Apostroph an dieser Stelle; '? lässt es bei der Suche zu. Es geht nicht in die Ersetzung ein. [- ] ist entweder ein Leerzeichen oder ein Bindestrich – eins von beiden muss in der ersten Form mit „Jahre“ verbinden.

Die zweite Form zielt auf „in den 80ern“ ab; um nicht mit Kodierungen (vielleicht von Formeln?) in Konflikt zu geraten, soll auf ern ein \\b folgen; das besagt, dass ein Worttrennungs-Zeichen anschließen muss – etwa ein Leerzeichen, ein Satzzeichen wie Punkt oder Komma oder das Zeilenende; nicht aber ein Buchstabe oder eine Ziffer.

Bei der automatischen Ersetzung muss aber auf den Kontext und die DiffPage geachtet werden, weil im Text stehen kann:

  • „die 30er Jahre des 20. Jahrhunderts“   oder
  • es ist vom Vormärz, also den Jahren vor den Revolutionen von 1848 die Rede.

Wie immer kann es sich auch um ein wortwörtliches Zitat handeln.

Vorlage neu benutzen: ISSN[Bearbeiten | Quelltext bearbeiten]

Wenn das Schlüsselwort ISSN auftritt und anschließend eine halbwegs passend formatierte Zahlenangabe, soll dies durch eine Vorlageneinbindung ersetzt werden:

mw.libs.WikiSyntaxTextMod.config.mod.plain = [
   ["\\bISSN(:|:?( | )+)([0-9]{4})[-–−]?([0-9]{3}[0-9xX])\\b",
    "{{ISSN|$3-$4}}"],
     
                                             ];
  • Das \\b am Anfang stellt sicher, dass ISSN als Wort allein steht; also weder Buchstabe noch Ziffer vorangeht.
  • Auf das Schlüsselwort ISSN folgt ein geklammerter Ausdruck, der unterschiedliche Kombinationen aus Doppelpunkt und/oder einfache/geschützte Leerzeichen zulässt.
  • Anschließend folgt eine Gruppe aus genau vier Ziffern. Diese ist in die dritte Klammer eingeschlossen.
  • Der trennende Strich könnte nicht nur als ASCII-Bindestrich vorhanden sein, sondern auch irrtümlich als Halbgeviertstrich oder Minuszeichen gegeben sein oder fehlen.
  • Nun folgt eine Gruppe aus genau vier Ziffern, deren letzte auch kleines oder großes X sein darf. Diese ist in die vierte Klammer eingeschlossen.
  • Beendet wird durch ein Wortende; es darf also weder Buchstabe noch Ziffer anschließen.

Ersetzt wird durch {{ISSN}} mit dem Inhalt der dritten und vierten Klammer.

Bildbeschreibung ergänzen[Bearbeiten | Quelltext bearbeiten]

Bei Einbindung ohne miniatur usw. wird kein Bildtitel angezeigt. Trotzdem sollte hier in der Regel eine Bildbeschreibung in den Quelltext eingefügt werden: Wer aus welchen Gründen auch immer das Bild nicht sehen kann, bekommt diesen Alternativtext dargestellt.

Ausnahme: Ist der Bildinhalt bereits vollständig durch beigefügten Text erklärt, dann muss die Bildbeschreibung explizit weggelassen werden, die Einbindung kann also ggf. mit |]] enden.
Grund: Die redundante Information verwirrt und schadet mehr, als dass sie irgendwie helfen würde.
Beispiel: Bei Sportinformationen werden die nationalen Zugehörigkeiten gern optisch durch Flaggensymbole hervorgehoben; für Sehende sehr sinnvoll. Können die Grafiken (inzwischen oft durch Vorlagen ersetzt) nicht gesehen werden, muss auch die Beschreibung verschwinden, sonst wird unverständlicher aufgeschäumter Brei vorgelesen:
gold schweizer kreuz schweiz silber deutschlandflagge deutschland bronze union jack großbritannien

Ist die Bildgröße mit px definiert, handelt es sich oft um Logos und Symbole:

mw.libs.WikiSyntaxTextMod.config.mod.plain = [
   ["(\\|[1-9][0-9]+px)\\]\\]",
    "$1|<!-- Bildbeschreibung fehlt ** ID: 30 -->]]"]
                                             ];

fügt den Kommentar ein, der dann in der DiffPage auffallen sollte. Statt eines Kommentars kann auch schon der Text eingesetzt werden, wenn man ständig auf gleichartigen Seiten arbeitet. Handelt der ganze Artikel etwa von Firma XY, dann sollte die Bildbeschreibung nur kurz und knapp „Logo“ oder „Firmenlogo“ lauten – nicht etwa „Logo der Firma XY GmbH & Co KG in Seattle, Washington (USA)“.

Codepage 1252[Bearbeiten | Quelltext bearbeiten]

Die Zeichen 127–159 sind in Unicode nicht definiert; zumindest nicht als sinnvolle Textzeichen.

Sie werden vom Skript zunächst einmal als Entities sichtbar gemacht, da sie teilweise nicht dargestellt werden (Breite Null).

Es lässt sich vermuten, dass in der deutschsprachigen Wikipedia Windows-Zeichen der CP1252 mit Copy&Paste aus entsprechend kodierten Dateien und Web-Dokumenten eingeschleppt wurden. Die (dezimalen) Entities werden deshalb zunächst ersetzt durch benannte Entities der entsprechenden Bedeutung. Teilweise wurde im Wikitext des Artikels bereits das entsprechende Unicode-Zeichen neben das anscheinend verschwundene Windows-Zeichen eingefügt; teilweise müsste es nun allgemein sichtbar gemacht werden.

In HTML sollen diese ungültigen Zeichencodes gemäß der gleichen Ersetzungsregel dargestellt werden: HTML parsing.

mw.libs.WikiSyntaxTextMod.config.mod.plain = [
["&#127;", "&#127;<!-- ??? -->"],
["&#128;", "&euro;"],
["&#129;", "&#129;<!-- ??? -->"],
["&#130;", "&sbquo;"],
["&#131;", "&fnof;"],
["&#132;", "&bdquo;"],
["&#133;", "&hellip;"],
["&#134;", "&dagger;"],
["&#135;", "&Dagger;"],
["&#136;", "&circ;"],
["&#137;", "&permil;"],
["&#138;", "&Scaron;"],
["&#139;", "&lsaquo;"],
["&#140;", "&OElig;"],
["&#141;", "&#141;<!-- ??? -->",],
["&#142;", "&#142;<!-- Zcaron &#381; -->"],
["&#143;", "&#143;<!-- ??? -->",],
["&#144;", "&#144;<!-- ??? -->",],
["&#145;", "&lsquo;"],
["&#146;", "&rsquo;"],
["&#147;", "&ldquo;"],
["&#148;", "&rdquo;"],
["&#149;", "&bull;"],
["&#150;", "&ndash;"],
["&#151;", "&mdash;"],
["&#152;", "&tilde;"],
["&#153;", "&trade;"],
["&#154;", "&scaron;"],
["&#155;", "&rsaquo;"],
["&#156;", "&oelig;"],
["&#157;", "&#157;<!-- ??? -->",],
["&#158;", "&#158;<!-- zcaron &#382; -->"],
["&#159;", "&Yuml;"]
                                             ];