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