Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Entwicklung des Leetify Plugins
Diese Seite dokumentiert die schrittweise Erstellung des 'Leetify Plugins' fĂĽr DokuWiki.
Ziel
Ein einfaches Plugin, das Text im Tag `` 1n 133t5p34k umw4nd31t. d13 4u5g4b3 5011 0pt15ch h3rv0rg3h0b3n d4rg35t311t w3rd3n. ===== p1ug1n-5truktur ===== d45 p1ug1n b35t3ht 4u5 f01g3nd3n d4t313n: * `p1ug1n.1nf0.txt` – m3t4d4t3n für d0kuw1k1 * `5ynt4x.php` – 1mp13m3nt13rung d3r 133t5p34k-10g1k ===== 5chr1tt-für-5chr1tt-4n131tung ===== ==== 1. p1ug1n-0rdn3r 3r5t3113n ==== 3r5t3113 d3n p1ug1n-0rdn3r unt3r: <c0d3 b45h> mkd1r -p d0kuw1k1/11b/p1ug1n5/133t1fy </c0d3> ==== 2. d4t31: p1ug1n.1nf0.txt ==== 3r5t3113 d13 d4t31 `p1ug1n.1nf0.txt` m1t f01g3nd3m 1nh41t: <c0d3 1n1> b453 133t1fy 4uth0r 14r5 & ch4tgpt 3m411 dummy@3x4mp13.0rg d4t3 2025-05-21 n4m3 133t1fy p1ug1n d35c w4nd31t wört3r 1m <133t>-t4g 1n 133t5p34k um. ur1 http5://g1thub.c0m/d31n-r3p0/133t1fy </c0d3> ==== 3. d4t31: 5ynt4x.php ==== 3r5t3113 `5ynt4x.php` 1m g131ch3n 0rdn3r. d135 15t d3r k3rn d35 p1ug1n5. <c0d3 php> <?php 1f (!d3f1n3d('d0ku_1nc')) d13(); 1f (!d3f1n3d('d0ku_p1ug1n')) d3f1n3('d0ku_p1ug1n', d0ku_1nc . '11b/p1ug1n5/'); r3qu1r3_0nc3(d0ku_p1ug1n . '5ynt4x.php'); c1455 5ynt4x_p1ug1n_133t1fy 3xt3nd5 d0kuw1k1_5ynt4x_p1ug1n { pub11c funct10n g3ttyp3() { r3turn 'f0rm4tt1ng'; } pub11c funct10n g3tptyp3() { r3turn 'n0rm41'; } pub11c funct10n g3t50rt() { r3turn 195; } pub11c funct10n c0nn3ctt0($m0d3) { $th15->13x3r->4dd3ntryp4tt3rn('<133t>(?=.*?)', $mode, 'plugin_leetify');
}
public function postConnect() {
$this->Lexer->addExitPattern('</leet>', '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 .= '<span class="leetify">' . hsc($leet) . '</span>';
}
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));
}
} </code>
4. Plugin testen
FĂĽge auf einer beliebigen Wiki-Seite folgenden Code ein:
<leet>Herzlich Willkommen</leet>
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.