DokuWiki

It's better when it's simple

Outils pour utilisateurs

Outils du site


fr:devel:syntax_plugins

Plugins de syntaxe

Les plugins de syntaxe sont des extensions pour créer de nouvelles syntaxes pour éditer les pages de votre DokuWiki. Pour être en mesure de comprendre ce qui est nécessaire pour l'enregistrement des nouveaux Syntaxe de DokuWiki vous devriez lire comment le Parser fonctionne.

Synopsis

Un plugin de syntaxe exemple doit définir une classe nommée syntax_plugin_exemple qui s'étend sur DokuWiki_Syntax_Plugin1). La classe doit être stockée dans un fichier appelé lib/plugins/exemple/syntax.php. Pour plus de détails sur les plugins leurs fichiers, voir la structure de fichiers du plugin.

La classe doit mettre en œuvre au moins les fonctions suivantes :

  • GetInfo() Retourne un dièse avec le plugin info [auteur, e-mail, date, nom, desc, url]
  • GetType() Peut retourner le type de syntaxe définit par ce plugin (voir ci-dessous)
  • GetSort() Renvoie un nombre utilisé pour déterminer dans quel ordre les syntaxes de DokuWiki sont ajoutées, voir aussi analyseur, pour ajouter des modes et getSort list.
  • ConnectTo($mode) Cette fonction est héritée de Doku_Parser_Mode2). C'est là qu'on enregistre les expressions régulières nécessaires pour correspondre à la syntaxe.
  • handle($match, $state, $pos, $$handler) pour préparer la syntaxe à être utilisée dans le moteur de rendu
  • render($mode, &$renderer, $data) pour afficher le contenu


Les méthodes additionnelles suivantes peuvent être retirées si besoin :

  • GetPType() Définit la manière dont cette syntaxe est traitée en ce qui concerne les paragraphes3). Retourne :
    • Normal— (valeur par défaut, qui sera utilisé si la méthode n'est pas surchargée) Le plugin peut être utilisé à l'intérieur des paragraphes,
    • block — Ouverture de paragraphes qui doivent être fermés avant la sortie du plugin ou
    • stack — cas spécial. Le plugin enveloppe d'autres paragraphes
  • GetAllowedTypes() (valeur par défaut : array()) FIXME
  • accepts($mode) Cette fonction est utilisée pour dire si l'analyseur accepte le mode syntaxe plugin $mode à l'intérieur de ses propres balises. Le comportement par défaut est de tester $mode avec le tableau des modes détenues par les propriétés héritées allowedModes.

D'autres fonctions peuvent être définies selon les besoins. Il est recommandé d'ajouter un “_” dans vos propres fonctions afin d'éviter d'éventuels mélanges de noms avec les futures améliorations des plugins DokuWiki.


Propriétés héritées

  • allowedModes — valeur initiale, un tableau vide, hérité de Doku_Parser_Mode4). Contient une liste des autres modes de syntaxe qui sont autorisés à se produire dans le propre mode de syntaxe du plugin (c'est-à-dire les modes qui appartiennent à l'un des autres marquages de dokuwiki qui peuvent être imbriquées dans les propres balises du plugin). Normalement, il est automatiquement rempli par la fonction accepts() qui utilise les résultats de getAllowedTypes().

Types de syntaxe

DokuWiki utilise différents types de syntaxe pour déterminer quelles syntaxes peuvent être imbriquées. Par exemple, vous pouvez avoir une mise en forme du texte dans les tableaux. Pour intégrer votre plugin dans ce système, il doit préciser quel type il s'agit et quels types peuvent être imbriquées à l'intérieur. Les types suivants sont actuellement disponibles :

Type utilisés dans… Description
container liste, tableau, citation, hr Les conteneurs sont des modes complexes qui peuvent contenir de nombreux autres modes. hr rompt le principe, mais il ne devrait pas être utilisé dans les tableaux/listes, c'est pourquoi ils sont mis ici
baseonly header Certains modes ne sont autorisés qu'à l'intérieur du mode base
formatting gras, accent, souligner, monospace, indice, exposant, barré, note de pied de page modes des styles de texte – note de bas de page se comporte comme un style similaire
substition 5) 'acronym' , 'smiley' , 'wordblock', 'entity', 'camelcaselink', 'internallink', 'media', 'externallink', 'linebreak', 'emaillink', 'windowssharelink', 'filelink', 'notoc', 'nocache', 'multiplyentity', 'quotes', 'rss' FIXME ils ne peuvent pas contenir d'autres modes
protected 'preformatted', 'code', 'file', 'php', 'html' modes qui ont un début et une fin symbolique mais à l'intérieur de laquelle aucun autre mode devrait être appliqué
disabled unformatted Dans ce mode, le balisage wiki n'est pas appliqué, mais les fins de ligne et les espaces ne sont pas conservés
paragraphs eol utilisé pour marquer les limites d'un paragraphe

inc/parser/parser.php

Discussion

Le dossier dans lequel se trouve le plugin doit se nommer comme dans la déclaration syntax.php. Sinon, vous aurez une erreur comme

Fatal error: Cannot instantiate non-existent class: syntax_plugin_xyz in <path>\inc\pluginutils.php on line 57

ou

Fatal error: Cannot redeclare class xyz in <path\lib\plugins\<xyz\<xyz>.php on line 58
1)
défini dans lib / plugins / syntax.php
2)
définie dans inc/parser/parser.php
3)
Voir Doku_Handler_Block
4)
définie dans inc/parser/parser.php
5)
Oui, y'a une faute, mais nous n'allons pas changer ça pour éviter de casser les plugins existants. Parfois, une faute de frappe devient une norme
fr/devel/syntax_plugins.txt · Dernière modification : 2008-08-10 20:54 de chi

Sauf mention contraire, le contenu de ce wiki est placé sous les termes de la licence suivante : CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki