[[..: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.