Les ingrédients
Pour cela, il va être nécessaire de modifier un seul et même fichier, class.wiki2xhtml.basic.php
qui se trouve dans le dossier /inc/classes/. Il va falloir le modifier en plusieurs points :
1. On crée la syntaxe qui va entourer
notre tableau en wiki. Pour cela, trouvez la ligne contenant :
'em' => array("",""),
et ajoutez avant :
'table' => array('[[',']]'),
2. On défini le masque afin de repérer cette syntaxe. Trouvez alors les lignes contenant :
# Paragraphe
else {
$type = 'p';
$line = trim($line);
}
et ajoutez avant :
elseif (preg_match('/^\[{2}(.*)\]{2}$/',$line,$cap)){
$type = 'table';
}
3. On défini la fonction qui va s'exécuter lorsque l'on rencontrera cette syntaxe. Trouvez alors les lignes contenant :
case 'a': $res = $this->__parseLink($res,$tag,$attr,$type); break;
et ajoutez avant :
case 'table': $res = $this->__parseTable($res,$attr); break;
4. Enfin, on créer la fonction qui va modifier notre syntaxe en tableau XHTML. Trouvez donc les lignes contenant :
# Mots wiki (pour héritage) function parseWikiWord($str,&$tag,&$attr,&$type)
et ajoutez avant :
function __parseTable($str,&$attr)
{
$res = $align = '';
$tab = explode('||',$str);
$lines = explode('::',$tab[0]);
if (!empty($tab[2])) {
$tab[2] = strtoupper($tab[2]);
if ($tab[2] == 'G' || $tab[2] == 'L') {
$align .= ' style="float:left; margin: 0 1em 1em 0;"';
} elseif ($tab[2] == 'D' || $tab[2] == 'R') {
$align .= ' style="float:right; margin: 0 0 1em 1em;"';
} elseif ($tab[2] == 'C') {
$align .= ' style="margin-left:auto; margin-right: auto;"';
}
}
if(!empty($tab[1])){
$attr .= ' summary="'.$tab[1].'"';
$res .= '<caption'. ? $align : '').
'>'.$tab[1].'</caption>'."\n";
}
$attr .= $align;
foreach($lines as $num => $line)
{
$cols = '';
$tblock = ($num == 0) ? '<thead>%s</thead>'."\n" : '<tbody>%s</tbody>'."\n";
$tcol = ($num == 0) ? '<th>%s</th>'."\n" : '<td>%s</td>'."\n";
$datas = $this->__splitTagsAttr($line);
foreach($datas as $data)
{
$cols .= sprintf($tcol,trim($data));
}
$res .= sprintf($tblock,'<tr>'.$cols.'</tr>'."\n");
}
return $res;
}
La recette
C'est bien beau tout ça mais comment on les fait concrètement nos tableaux hein? Rien de plus simple voilà la syntaxe à utiliser [1]
[[ Légende 1|Légende 2 :: Donnée 1 ligne 1|Donnée2 ligne 1 :: Donnée 1 ligne 2|Donnée2 ligne 2 || Voilà la description du tableau (pour le summary et le caption) || C (ou G OU D) ]]
Vous voyez, c'est pas vraiment compliqué? Le dernier argument avec le C ou D, c'est exactement comme pour les images, cela permet de placer le tableau à gauche, au centre ou à droite mais il est optionnel. Il en va de même pour la description du tableau.
Je crois que je n'ai rien oublié, si vous constatez des problèmes / défauts, vous pouvez m'en parler dans les commentaires que je mette éventuellement à jour
Notes
[1] je vous la fais courte hein