Benutzer:PerfektesChaos/js/WikiSyntaxTextMod/flow/corr
WikisyntaxTextMod → Syntaxpolitur → Syntaxkorrektur Vorlage:Überschriftensimulation 1 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
Sortierschlüssel
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.
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.
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.
Werkzeugleisten-Fehlklicks
Relikte von Fehlklicks auf die Werkzeugleiste wie
- <ref>Fußnotentext hier einfügen</ref>
werden im Modus WikisyntaxDeutschVieles
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.
Fettdruck in Überschrift und Definitionsterm
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 und wird deshalb belassen.
Automatisch nicht korrigierbare Syntaxfehler
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
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.
- 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.
Bei Skriptbenutzung kann die Fehlerliste im Anwendungsobjekt abgefragt werden.
- Hier werden keine Fehlermeldungen in den Seitentext eingefügt.
- Die Komponente
.errors.collection
gibt alle Fehler 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.
Die Gestaltung 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
Zu Einzelheiten siehe benutzerdefinierte Ersetzungen.
Überschrift keine eigene Zeile
Überschriften müssen auf einer eigenen Zeile stehen. Der nachstehende Ausdruck gewährleistet das:
var Modif_Text = [
["\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
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).
var Modif_Text = [
["<br /> *(\n+[*#:;])",
"$1"],
["(\n[*#:;].+) *<br /> *\n",
"$1\n"],
[" *<br /> *\n *\n",
"\n\n"]
];
Ausblick: künftige Möglichkeiten
Mehrfache Spezial-Links
Mehrfache identische Kategorie
im Kategorien-Block und mehrfaches identisches Interlanguage im interwiki-Block kann gesucht und die Wiederholung entfernt werden.
Sortierung
Die 2009/2010 geführte Diskusssion wirkt nicht so, als ob die Systematik der Sortierschlüssel bereits zu einem robusten, stabilen und handhabbaren Ergebnis gekommen ist. Deshalb 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. Damit ließen sich beispielsweise Zahlen als Regulärer Ausdruck linksbündig mit Nullen auffüllen, das Skript wäre Bot-ähnlich benutzerdefiniert für entsprechende Artikel einer Kategorie einzusetzen.
Das selten auftretende Konstrukt [[Kategorie:Mann|Mann]] kann im Einzelfall notwendig und sinnvoll sein; es wäre nur manuell zu berichtigen.