Syntaxe wiki : du texte au xhtml

Le but premier de « AutoIt-CMS » était d'automatiser la gestion de l'ensemble des pages html du site. Puis, au fur et à mesure que l'écriture du code avançait, j'ai décidé de pousser plus loin l'analogie avec les CMS "classiques".

La plupart d'entre eux possèdent en effet ce qu'on appelle une « syntaxe wiki ». Il s'agit de règles d'écriture utilisées lors de l'édition du texte qui permettent ensuite de le transformer en code HTML. Ainsi, si vous voulez qu'un mot apparaissent en gras par exemple, vous écrirez dans le champ d'édition du logiciel quelque chose comme *mot_en_gras*. Les deux étoiles sont la syntaxe wiki qui va indiquer au programme que lors de la création de la page HTML, il faudra écrire <strong>mot_en_gras</strong>.

C'est en testant le CMS Plume et en tentant de personnaliser la syntaxe wiki qu'il utilise (le WikiRenderer de Laurent Jouanneau) que m'est venu l'envie d'utiliser ce mode d'édition. Tant qu'à automatiser l'écriture des pages web, autant le faire pour le code lui-même, même si j'ai maintenant pris l'habitude de manipuler les balises HTML.

Là encore, les fonctions AutoIt de manipulation de variables permettent une traduction de la syntaxe wiki vers le XHTML. Voici par exemple la syntaxe pour les liens:

Le texte wiki :

[[texte_lien|adresse_lien|title_lien(|langue_lien/fonction)]]

devient le code html :

<a href="adresse_lien" title="title_lien" (hreflang="langue_lien")>texte_lien<a>

Pour l'instant, le programme transforme :

  • la ponctuation, avec insertion d'un espace insécable devant le point-virgule, les deux points, etc.
  • la plupart des balises blocs: p, ul, li, dl, dt, dd, les titres (hn).
  • une partie des balises inline: les liens (a), les images (img), les acronymes (acronym), les citations (cite), le code (code), les emphases (em, strong).

D'autres règles syntaxiques sont spécifiques aux classes utilisées sur le site, comme le formatage des listes de définition utilisées pour présenter les images. Enfin, une syntaxe wiki est réservé plus particulièrement à la création de liens pour les notes de bas de page des articles.

Quelques problèmes ne sont pas encore résolus :

  • les listes de définitions, dont les configurations sont nombreuses. La syntaxe permet déjà de gérer les listes de définitions simples (une ou plusieurs dt puis une ou plusieurs dd) et les listes un peu plus complexes (plusieurs couples dt/dd). Reste à gérer les listes avec des dd incluant des balises blocs (p, ul, etc.), gestion pour l'instant réservée aux notes de bas de page des articles.
  • Les listes à puces hiérarchisées.
  • Corriger certaines erreurs dans l'insertion des espaces insécables et insertion de ces espaces dans des chiffres (milliers, millions, etc.).
  • si une syntaxe wiki est mal formulée (balise ouvrante mais pas de balise fermante), la traduction tourne en boucle et le programme ne s'arrête plus :-).

Pour en savoir plus sur la syntaxe wiki :