défini dans lib / plugins / syntax.php
Table des matières
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_Plugin
1). 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 rendurender($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 oustack
— cas spécial. Le plugin enveloppe d'autres paragraphes
GetAllowedTypes()
(valeur par défaut :array()
)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éesallowedModes
.
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 fonctionaccepts()
qui utilise les résultats degetAllowedTypes()
.
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' | |
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