LanguageTool-Tutorial Teil III: Java-Regeln und falsche Freunde
Es folgt nun eine Erläuterung der Codezeilen. Wirklich wichtig für die Regel ist die match
-Funktion; von dem vielen anderen »Drumherum« sollte man sich nicht abschrecken lassen.
/* LGPL Lizenzblock [...] */
Der obligatorische Lizenzblock ist bei allen Dateien bis auf Jahr und Name des Autors identisch.
package org.languagetool.rules.de;
Mit dieser Zeile teilt man Java mit, dass die Datei zum »Paket« der deutschen Regeln gehört.
import java.util.ArrayList; import java.util.List; import java.util.ResourceBundle; import org.languagetool.AnalyzedSentence; import org.languagetool.AnalyzedTokenReadings; import org.languagetool.rules.Category; import org.languagetool.rules.RuleMatch;
Diese Klassen werden eigentlich in fast jeder Java-Regel benötigt. Durch das Importieren der Klassen ist es der Regel erst möglich, auf die zu analysierenden Sätze zuzugreifen, Fehler anzuzeigen und Korrekturvorschläge zu machen.
/** * Check incorrect use of "spiegelt * ... wider", namely using "wieder" * instead of "wider", e.g. in "Das * spiegelt die Situation wieder" * (incorrect). * * @author Daniel Naber */
In einem Kommentar wird kurz erklärt, welche Art von Fehler die Regel erkennt.
public class WiederVsWiderRule extends GermanRule {
Jede deutsche Java-Regel wird als Klasse implementiert, die eine Unterklasse der Klasse GermanRule
ist. Der Klassenname muss identisch mit dem Dateinamen (ohne Dateiendung) sein.
public WiederVsWiderRule(ResourceBundle messages) { if (messages != null) super.setCategory(new Category(messages.getString("category_typo"))); }
Der Konstruktor hat denselben Namen wie die Datei (ohne Dateiendung). Im Konstruktor wird die Kategorie der Regel angegeben, wobei hier die Variable category_typo
(= »Mögliche Tippfehler«) aus der Übersetzungsdatei benutzt wird.
@Override public String getId() { return "DE_WIEDER_VS_WIDER"; }
Die Funktion getId
gibt die ID der Regel zurück. Zur Erinnerung: Die ID ist eine einmalige Bezeichnung, die nur aus Großbuchstaben und keinen Leerzeichen besteht und intern benutzt wird, um die Regel anzusprechen.
@Override public String getDescription() { return "Möglicher Tippfehler 'spiegeln ... wieder(wider)'"; }
Die Funktion getDescription
liefert die Beschreibung der Regel, wie sie im Einstellungsdialog angezeigt wird.
Außerdem kann eine Funktion getUrl
implementiert werden, welche eine URL zu einer Webseite, auf der der Fehler näher erläutert wird, zurückgibt.
@Override public RuleMatch[] match(AnalyzedSentence text) {