Benutzer-Werkzeuge

Webseiten-Werkzeuge


it-themen:allgemein:erstellung_leetify-plugin

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 `` 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 m1t fr3und11ch3r unt3r5tützung v0n 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.

it-themen/allgemein/erstellung_leetify-plugin.txt · Zuletzt geändert: von lars