[[..:start|zurück]]
====== Entwicklung des Leetify Plugins ======
Diese Seite dokumentiert die schrittweise Erstellung des '''Leetify Plugins''' für DokuWiki.
===== Ziel =====
Ein einfaches Plugin, das Text im Tag `` in Leetspeak umwandelt. Die Ausgabe soll optisch hervorgehoben dargestellt werden.
===== Plugin-Struktur =====
Das Plugin besteht aus folgenden Dateien:
* `plugin.info.txt` – Metadaten für DokuWiki
* `syntax.php` – Implementierung der Leetspeak-Logik
===== Schritt-für-Schritt-Anleitung =====
==== 1. Plugin-Ordner erstellen ====
Erstelle den Plugin-Ordner unter:
mkdir -p dokuwiki/lib/plugins/leetify
==== 2. Datei: plugin.info.txt ====
Erstelle die Datei `plugin.info.txt` mit folgendem Inhalt:
base leetify
author Lars mit freundlicher Unterstützung von ChatGPT
email dummy@example.org
date 2025-05-21
name Leetify Plugin
desc Wandelt Wörter im -Tag in Leetspeak um.
url https://github.com/dein-repo/leetify
==== 3. Datei: syntax.php ====
Erstelle `syntax.php` im gleichen Ordner. Dies ist der Kern des Plugins.
Lexer->addEntryPattern('(?=.*?)', $mode, 'plugin_leetify');
}
public function postConnect() {
$this->Lexer->addExitPattern('', 'plugin_leetify');
}
public function handle($match, $state, $pos, Doku_Handler $handler) {
return array($state, $match);
}
public function render($mode, Doku_Renderer $renderer, $data) {
if ($mode !== 'xhtml') return false;
list($state, $match) = $data;
if ($state === DOKU_LEXER_UNMATCHED) {
$leet = $this->toLeet($match);
$renderer->doc .= '' . hsc($leet) . '';
}
return true;
}
private function toLeet($text) {
$search = ['s','e','a','o','i','l'];
$replace = ['5','3','4','0','1','1'];
return str_ireplace($search, $replace, strtolower($text));
}
}
==== 4. Plugin testen ====
Füge auf einer beliebigen Wiki-Seite folgenden Code ein:
Herzlich Willkommen
Erwartete Ausgabe: h3rz11ch w111k0mm3n
==== 5. Optional: CSS hinzufügen ====
Zur besseren Darstellung:
.leetify {
font-family: monospace;
background: #222;
color: #0f0;
padding: 2px 6px;
border-radius: 4px;
}
===== Weiterentwicklungsideen =====
* Unterstützung von Zufalls-Leet
* GUI zur Konfiguration der Zeichenersetzung
* Un-Leet-Konvertierung
===== Lizenz =====
Dieses Plugin steht unter der MIT-Lizenz.