WikiSyntaxTextModSyntaxpolitur → Syntaxkorrektur

Syntaxkorrektur

Nur wenige Fehler sind so sicher zu erkennen, dass sie risikolos automatisch korrigiert werden können.

Zusätzlich erfolgt eine Analyse auf solche Fehler, die nicht stillschweigend berichtigt werden können. Darauf werden Benutzer abschließend hingewiesen. Ebenfalls ein Hinweis erfolgt bei zuverlässig automatischer Fehlerkorrektur, bei denen aber die Möglichkeit einer seltenen Fehlinterpretation bleibt.

Zurzeit implementiertes Vorgehen

Bearbeiten

Sortierschlüssel

Bearbeiten

Betrifft: {{SORTIERUNG:…… und [[Kategorie:*|……]]

Autoren denken zwar an die Umstellung „Nachname, Vorname“ – vergessen jedoch gelegentlich Umlaute usw., insbesondere wenn mehrere auftreten.

Non-ASCII-Zeichen werden gemäß Hilfe:Sortierung berichtigt. Mit Aktivierung des Unicode Collation Algorithm im Projekt wäre dies anders zu konfigurieren.

ASCII-Sonderzeichen (Leerzeichen, Klammern, Komma, #,!, auch Sortierung mehrstelliger Zahlen) usw. werden von der Automatik nicht berücksichtigt, lediglich aufeinander folgende Leerzeichen werden auf genau eines reduziert.

Das erste Zeichen des Sortierschlüssels wird ggf. in Großschreibung umgewandelt. Das ist Tradition, aber inzwischen nicht mehr notwendig.

Wenn ein Globaler Sortierschlüssel (SORTIERUNG:/DEFAULTSORT:) vorhanden ist, werden gleichlautende Schlüssel aus den Einzelkategorien entfernt; ansonsten solche, die identisch mit dem Seitennamen sind.

Sortierschlüssel sind anschließend geschützt gegen Veränderungen durch dieses Skript.

checkwiki #69 checkwiki #70

ISBN werden als „magic“ in ein Link umgewandelt. Damit dies möglich ist, müssen von der Formatierung Bedingungen erfüllt sein, die richtiggestellt werden, wenn die Absicht zweifelsfrei interpretiert werden kann (Anzahl der folgenden Ziffern exakt zulässig):

  • Genau ein Leerzeichen zwischen ISBN und Nummer.
    • Kein Doppelpunkt; Gleichheitszeichen nur bei einem Vorlagenparameter.
    • Keine Stellenzahl wie etwa ISBN-13 oder ISBN-10.
    • Großschreibung von ISBN.

Sowohl als Magic Word wie auch bei einem identifizierbaren Vorlagenparameter:

  • Bindestriche (ASCII 4510) als Gliederung innerhalb der Nummer.
    • Leerzeichen, Minuszeichen, Bis-Strich, Punkt,  , aufeinanderfolgende Gliederungszeichen werden durch genau einen Bindestrich ersetzt.
  • Bindestriche als Gliederung nachtragen: Beim Sprachcode und der Prüfzifffer sowie bei den EAN-„Ländernummern“ (978 und 979); fehlerhafte Bindestriche entfernen bzw. verschieben.

Im Anschluss wäre in einer ungegliederten ISBN nur noch die Gliederung zwischen Verlag und Titel zu ergänzen. Für praktisch alle Sprachen erfolgt auch dies durch das Skript.

Eine fehlerhafte Prüfzifffer wird natürlich nicht „berichtigt“. Vielmehr werden keine Striche eingefügt oder sonstige Formatierungen vorgenommen, wenn eine fehlerhafte Prüfzifffer festgestellt wird, weil nicht bekannt ist, welche der Ziffern fehlerhaft ist. Hingegen wird eine Warnung angezeigt.

Wie ISBN werden PMID als „magic“ in ein Link umgewandelt. Damit dies möglich ist, müssen von der Formatierung Bedingungen erfüllt sein, die richtiggestellt werden, wenn die Absicht zweifelsfrei interpretiert werden kann (hinreichende Anzahl der folgenden Ziffern):

  • Genau ein Leerzeichen zwischen PMID und Nummer; kein Doppelpunkt oder Gleichheitszeichen.

Werkzeugleisten-Fehlklicks

Bearbeiten

Relikte von Fehlklicks auf die Werkzeugleiste wie

  • <ref>Fußnotentext hier einfügen</ref>

werden auf Sonderwunsch entfernt; es hat sie aber offenbar schon jemand systematisch im gesamten Artikelbestand gesucht und bereinigt. Frische Einfügungen werden deshalb nur noch selten angetroffen werden.[1]

Für die deutschsprachige Wikipedia ist nach vorheriger Definition des Anwendungsobjekts die Bereinigung möglich:

mw.libs.WikiSyntaxTextMod.config.Werkzeugleiste  =  true;

Früher wurde das mittels der globalen Variablen WikisyntaxDeutschVieles ausgelöst. Diese entstammte der Frühzeit der Entwicklung (Ende 2009, 2010) und wird 2014 nicht mehr unterstützt werden. Sie sollte ursprünglich Ausführungszeit beim Durchsuchen nach vielen Zeichenketten sparen; durch geänderte Methodik ist das nun obsolet.

Fettdruck in Überschrift und Definitionsterm

Bearbeiten

In einem Definitionsterm (Zeile beginnt mit ;) kann Fettdruck nicht wahrgenommen werden und wird entfernt.

  • In einer Überschrift ist der Fettdruck zwar auch nicht zu sehen, aber 2012 im Inhaltsverzeichnis sichtbar (rev:105284) und wird deshalb belassen.

Automatisch nicht korrigierbare Syntaxfehler

Bearbeiten
 
Warnhinweis, falls sich nicht alle Fehler automatisch beheben lassen

Das Grundprinzip des Skriptes ist, dass zweifelsfrei interpretierbare Syntax-Elemente, die etwas unglücklich formatiert und weniger gut für den Menschen zu lesen sind, unauffällig und ohne Benutzereingriff verbessert werden.

Wenn die vorgefundene Syntax nicht eindeutig ist, so ist dem Skript keine Berichtigung möglich. – Beispiel:
== 2 links, rechts 3 ===
Anzahl der Gleichheitszeichen nicht ausgewogen
Eine Korrektur ist nur manuell möglich und muss aus dem Kontext erschlossen werden.

Fehlermeldungen

Bearbeiten

Mit einem interaktiven Benutzer kommuniziert das Skript wie folgt:

  • Alle Fehlermeldungen und risikobehafteten Berichtigungen werden gesammelt; zum Abschluss der Bearbeitung wird eine auffallende Mitteilungsbox angezeigt. Bei Korrektur mit Restrisiko geschieht dies immer auf der Diffpage.
  • Zwischenzeitlich wird ein Kommentar mit einer Liste aller Fehlermeldungen vor die erste Zeile des Seitentextes eingefügt, wenn es keine andere Möglichkeit gibt. Sofern das experimentelle Live-Preview (bei dem man auf derselben Seite verbleibt) oder auch ein beschreibbarer sessionStorage angetroffen wird, entfällt dies.
  • Wiederholt sich derselbe Fehlertyp mit genau den gleichen Einzelheiten, wird dies in Kursivschrift vor der Meldung angezeigt, und die Fehlermeldung erscheint nur einmal.
  • Die Zahl der angezeigten Fehler ist standardmäßig auf 7 begrenzt. Durch Folgefehler, vielfach kopiertes falsches Konstrukt oder bei ersten Entwurfsfassungen kann es zu einer unverdaulichen Menge an Fehlern kommen.
  • Zusätzlich können benutzerdefinierte Warnungen angezeigt werden.

Bei Skriptbenutzung kann die Fehlerliste im Anwendungsobjekt abgefragt werden.

  • Hier werden keine Fehlermeldungen in den Seitentext eingefügt.
  • Die Komponente .errors.collection gibt alle Einzelfehler wieder; falls es sich um ein Array handelt, sind schwere nicht zweifelsfrei behebbare Fehler gefunden worden. Jedes Element dieses Arrays ist ein Array, das ein Codewort für den Fehlertyp enthält, weiter einen automatischen Behebungsversuch kennzeichnet und den Kontext angibt.

Gestaltung der Mitteilungsbox

Bearbeiten

Das Aussehen der Mitteilungsbox kann individuell beeinflusst werden. Sie leitet sich von der class=error ab.

Für Routiniers, zum Einfügen in die eigene common.css:

   .error-detail {
      font-size: 90%;
      font-weight: normal;
   }
   .error-explanation {
      display: none;
   }

Mittels Anwendungsobjekt lässt sich die maximale Anzahl der interaktiv angezeigten Fehler definieren (mit integrierter Definition des Anwendungsobjekts):

   mw.libs.WikiSyntaxTextMod  =  { config:  { errorlimit: 25 }  };

Diese Anzahl kann auch auf Null gesetzt werden; dann erfolgt keine Benachrichtigung. Die Sammlung in .errors.collection wird davon nicht beeinflusst.

Beispiele für benutzerdefinierte Ersetzungen

Bearbeiten

Zu Einzelheiten siehe benutzerdefinierte Ersetzungen.

Überschrift keine eigene Zeile

Bearbeiten

checkwiki #8

Überschriften müssen auf einer eigenen Zeile stehen. Der nachstehende Ausdruck gewährleistet das:

mw.libs.WikiSyntaxTextMod.config.mod.plain = [
       ["\n(==+) *([^ =\n][^=\n]*[^ =\n]) *\\1 *([^ =\n])",
        "\n$1 $2 $1\n$3"]
                                             ];

Theoretisch denkbar ist, dass es sich um den Code einer Programmiersprache oder um ASCII-Art handeln soll, der nicht durch <code> oder <syntaxhighlight> geschützt wurde.

<br> am Ende eines Absatzes oder eines Listenpunkts oder vor einem Listenpunkt

Bearbeiten

checkwiki #54

Es ist wirkungslos, wenn am Ende oder vor einem Listenpunkt (genauer: einem Block-Element) ein Zeilenumbruch <br> steht; Gleiches gilt vor einem Absatz-Ende (doppelte Leerzeile).

mw.libs.WikiSyntaxTextMod.config.mod.plain = [
       ["<br /> *(\n+[*#:;])",
        "$1"],
       ["(\n[*#:;].+) *<br /> *\n",
        "$1\n"],
       [" *<br /> *\n *\n",
        "\n\n"]
                                             ];

Ausblick: künftige Möglichkeiten

Bearbeiten
Bearbeiten

Mehrfache identische Kategorie im Kategorien-Block und mehrfaches identisches Interlanguage im interwiki-Block kann gesucht und die Wiederholung entfernt werden.

Sortierung

Bearbeiten

Es werden vorläufig keine zusätzlichen automatischen Berichtigungen vorgenommen.

Da der Sortierschlüssel bei Ausführung dieses Skriptes gegen Veränderungen geschützt ist, wäre ein zusätzlicher Steuerparameter erforderlich.

Das selten auftretende Konstrukt [[Kategorie:Mann|Mann]] kann im Einzelfall notwendig und sinnvoll sein; es wäre nur manuell zu berichtigen.

Anmerkungen

Bearbeiten
  1. Siehe dazu auch Spezial:Missbrauchsfilter/6