Le jour de l'unification des syntaxes wiki sera un grand jour. Voila le parfait exemple d'un défaut du monde du Logiciel Libre, toujours premiers pour dire qu'il faut appliquer les standards mais pas très doués pour en créer un... enfin bon j'avoue que je suis un peu énervé. Dans le cadre du transfert de certains billets de blogs sur le wiki de documentation d'ubuntu-fr on me demande souvent s'il n'existe pas un convertisseur pour passer d'une syntaxe wiki Dotclear à une syntaxe wiki Dokuwiki, c'est maintenant chose faite.
C'est pas vraiment parfait et il aurait fallu passer par des regexp (d'ailleurs s'il y a des gourous dans l'assistance, le code est libre ;-) ) mais j'ai voulu faire simple et rapide.
Son utilisation nécessite un code wiki Dotclear valide (surtout si vous échappez les caractères, il faut que ce soit fait pour le caractère ouvrant ET le caractère fermant ! Et oui wiki2xhtml[1] permet de n'échapper que le premier...). Il suffit de sauvegarder votre syntaxe wiki Dotclear dans un fichier puis de lire l'aide fournie avec dotclear2dokuwiki :
./dotclear2dokuwiki --help
J'ai essayé de tester toutes les possibilités mais je manquais de code farfelu à tester, n'hésitez pas à me contacter si vous rencontrez des problèmes lors de l'exécution.
Si vous voulez passer directement votre billet sur le wiki de documentation d'ubuntu-fr, n'oubliez pas que le ton employé pour cette dernière doit être le plus neutre possible et que les images seraient mieux sur le ftp d'ubuntu-fr (le code actuel permet quand même de générer des urls complètes à partir des urls relatives de votre code wiki Dotclear).
Notes
[1] il faudra aussi qu'on m'explique un jour pourquoi l'url d'accès passe de la première à la deuxième place si l'on met un titre lorsqu'on fait un lien avec wiki2xhtml, c'est assez embêtant...
Commentaires
Herbie le 03/12/2005 :
Excellente initiative !! Je penserai à utiliser ton programme la prochaine fois que je fais un billet potentiellement intéressant pour le wiki :)
Sinon le phénomène wiki est assez récent, c'est peut être pour ça qu'il n'y a pas de standard encore mais c'est vrai que ce serait une bonne chose que d'uniformiser tout cela...au moins un minimum.
Rb
David Latapie le 04/12/2005 :
CraoWiki n'avait-il pas lancé une initiative de standardisation des syntaxes wiki?
Pour les standards open-source, je trouve que tu y vas un peu. W3C, ça te dit quelque choses ? ;-)
David Latapie le 04/12/2005 :
Screugneugneu, le fil de commentaire ne fonctionne pas, je suis abonné au blog, à la place…
David, biologeek le 04/12/2005 :
> CraoWiki n'avait-il pas lancé une initiative de standardisation des syntaxes wiki?
En effet : wiki.crao.net/index.php/W... mais aucune édition depuis plus d'un an, c'est vraiment dommage !
> Pour les standards open-source, je trouve que tu y vas un peu. W3C, ça te dit quelque choses ? ;-)
En fait c'est plus la lenteur de la procédure qui m'exaspère à chaque fois...
> Screugneugneu, le fil de commentaire ne fonctionne pas, je suis abonné au blog, à la place…
Le fil RSS est réparé ;)
David Latapie le 04/12/2005 :
En fait c'est plus la lenteur de la procédure qui m'exaspère à chaque fois…>
Je ne vois pas de quoi tu veux parler ;-)
blog.empyree.org/?2005/09...
Xethorn le 04/12/2005 :
En parlant de syntaxe wiki, je voudrais savoir si vous auriez une idée de syntaxe facile à mettre en place pour la mise en forme de tableaux. Celle de dokuwiki me semble totalement inadaptée.
Si vous avez des idées ... :)
Ps : c'est effectivement pour le parseur de PolyIn
Tatane le 04/12/2005 :
Aaaaah, qu'elle bonne initiative !
Tu m'épargnes quelques heures de dev, merci !
Au prochain billet sur Ubuntu je testerai ton script, merci bcp ...
Philippe le 30/12/2005 :
SYSTEME BINAIRE : Combat entre les huns et les héros (Marc Escayrol)
Laurent - CyberSDF le 04/02/2006 :
Super ça fonctionne sauf... Qu'il ne met pas de retour chariot avant les " *" :-( et je ne vois pas comment les ajouter.
David, biologeek le 05/02/2006 :
Ok, c'est corrigé, du coup c'est une nouvelle version qui est disponible ;)
Gab le 09/06/2006 :
Bien, ça.
J'aurais pu te faire les regexp si je connaissais un peu le python (ou si tu l'avais fait en perl ;) )
Reste plus qu'à en faire un plugin pour dotclear, histoire de rédiger en syntax dokuwiki!
Yannick le 05/07/2006 :
Ce convertisseur est une super idée... mais ca serait mieux si j'arrivais a le faire marcher... :)
Si vous avez des idees.... ? :)
./dotclear2dokuwiki.py -v -i /tmp/toto -o /tmp/out
Warning, you haven't specified a base url, I hope your wiki code for images and links contains only complete urls...
Traceback (most recent call last):
File "./dotclear2dokuwiki.py", line 291, in ?
main()
File "./dotclear2dokuwiki.py", line 258, in main
line = _add_link(line)
File "./dotclear2dokuwiki.py", line 99, in _add_link
line = "".join(final_line) + after
UnboundLocalError: local variable 'after' referenced before assignment
md5sum dotclear2dokuwiki.py
1c45ecfb2aad94588199e66179a0e80a dotclear2dokuwiki.py
Est ce que mon md5 est ok ?
Merci...
David, biologeek le 05/07/2006 :
Pourrais-je avoir « toto » ? :)
A priori le md5 est bon, c'est juste qu'il doit y avoir un cas particulier non traité pour l'instant.
Yannick le 05/07/2006 :
Il semble que ca soit la partie avec les caracteres d'echappement qui fout la grouille....
...pour "échapper" les crochets...
\[totot \] tututu
J'ai bien lu au debut de ton article qu'il faut faire attention aux caracteres d'echappement, mais je n'ai pas bien compris ce qu'il faut faire dans ce cas... ??... Il faudra que je regarde quels sont les caracteres d'echappement valides aussi bien pour dotclear que pour DokuWiki....
En tous cas les lignes avec caractères d'echappement supprimées, ton script fonctionne... Désolé pour le dérangement.. et merci pour le script... :)
ANCILLON le 06/08/2006 :
Bonjour,
Je m'adresse à vous spécialiste wiki, je développe une application dans laquelle je souhaite utiliser le wiki entre autres codifiactions.
J'ai réalisé un programme php qui fonctionne trés bien en test extérieur à Dotclear, mais une fois intégé il ne fonctionne plus du tout ? rien ne se passe ? les données ne sont pas affichées.
Les fichiers class sont dans ma bib. et le chemin d"accés semble bon.
Voci le code :
<?php
require_once dirname(__FILE__).'/class.wiki2xhtml.php';
$fichier = isset($_GET['fichier']) ? $_GET['fichier'] : "";
$chemin = $fichier;
$files="";
$fp=@fopen($chemin,"r");
if($fp){
while(!feof($fp))
{
$files[] = fgets($fp,1024);
}
fclose($fp);
$nbfile=count($files);
$pos = strpos($files[0], "wiki");
for($i=0; $i<$nbfile; $i++) {
if ($pos > -1) {
if ($i>0) {
$bloc=$files[$i];
$bloc=ajx_dcKozliBloc($bloc);
echo ($bloc);
}
} else {
// $files[$i]= utf8_encode($files[$i]);
$bloc=$files[$i];
echo ($bloc);
}
}
} else echo $chemin;
function ajx_dcKozliBloc($bloc) {
$wiki = new wiki2xhtml();
return($wiki->transform($bloc));
}
?>
Je vous remercie de votre aide.
Salutations.
JPA
ANCILLON le 07/08/2006 :
Bonjour,
Le problème n'êtait pas dans ce programme, l'erreur est corrigée.
MercI
JPA
David, biologeek le 07/08/2006 :
Bah, de rien, j'avais pas encore eu le temps de m'y intéressé :)
Je laisse le code, ça peut servir à d'autres.