{"id":185,"date":"2010-04-23T17:16:07","date_gmt":"2010-04-23T15:16:07","guid":{"rendered":"http:\/\/ban.free-h.net\/?p=185"},"modified":"2010-04-23T17:16:07","modified_gmt":"2010-04-23T15:16:07","slug":"lancement-officiel-de-geanygendoc","status":"publish","type":"post","link":"https:\/\/ban.netlib.re\/blog\/lancement-officiel-de-geanygendoc\/","title":{"rendered":"Lancement (officiel) de GeanyGenDoc"},"content":{"rendered":"<p>H\u00e9 bien ces temps-ci mon blog croule sous les articles, va falloir que je me calme moi\u2026 non ? Bon, je vais donc vous parler de mon dernier n\u00e9, qui incube quand-m\u00eame depuis un moment\u2026<\/p>\n<h3>Une petite histoire, \u00e7a vous dit ?<\/h3>\n<p>Une petite histoire\u2026 tout commence il y a bien longtemps, du temps o\u00f9 l&rsquo;ann\u00e9e s&rsquo;\u00e9crivait encore 2009. En ces temps recul\u00e9s donc, et en grand amateur de documentation fra\u00eeche et bien form\u00e9e<a href=\"#ggd-185-note-1\"><sup>1<\/sup><\/a>, l&rsquo;id\u00e9e d&rsquo;\u00e9crire un <em>plugin<\/em> pour cet EDI<a href=\"#ggd-185-note-2\"><sup>2<\/sup><\/a> sympathique qu&rsquo;est <a href=\"http:\/\/www.geany.org\/\">Geany<\/a> qui faciliterai la r\u00e9daction de la documentation d&rsquo;un code source germa dans mon esprit. Ni d&rsquo;une ni de deux, je m&rsquo;att\u00e8les \u00e0 la t\u00e2che. Sauf que je me rends compte rapidement que le <em>design<\/em> de mon <em>plugin<\/em> est tout sauf le bon. Je voulais quelque-chose d&rsquo;extensible : c&rsquo;est on ne peut plus ferm\u00e9. Je voulais quelque chose qui g\u00e8re facilement \u00e0 peu pr\u00e8s n&rsquo;importe quel langage de programmation : c&rsquo;est tout sauf le cas. Je voulais quelque-chose qui soit \u00e0 peu pr\u00e8s ind\u00e9pendant du format de documentation : que nenni ! J&rsquo;arr\u00eate donc les efforts inutiles, et me penches sur un <em>design<\/em> plus adapt\u00e9\u2026 mais, et c&rsquo;est ce qui va me perdre, j&rsquo;ai quand-m\u00eame d\u00e9j\u00e0 quelque-chose qui fonctionne relativement bien pour mes besoins.<\/p>\n<p>Et donc, le temps passe et j&rsquo;oublie un peu mon devoir d&rsquo;am\u00e9liorer ce design ; et ceci est, je l&rsquo;avoue volontiers, en grande partie d\u00fb au fait que le mauvais <em>plugin<\/em> fonctionnait trop bien, satisfaisant la majorit\u00e9 de mes besoins. Le temps passe donc, et je ne r\u00e9fl\u00e9chis que distraitement \u00e0 ce nouveau <em>design<\/em>.<\/p>\n<p>Mais, bien-entendu, arrive un moment o\u00f9 je trouve une id\u00e9e qui me para\u00eet adapt\u00e9e \u2014 l&rsquo;avenir nous le dira \u2014 et je commences donc \u00e0 l&rsquo;impl\u00e9menter. Mais ha ha, je me heurtes \u00e0 un l\u00e9ger probl\u00e8me\u00a0: j&rsquo;ai besoin d&rsquo;un moteur de <em>template<\/em> qui permet d&rsquo;utiliser des boucles et autres tests. J&rsquo;ai beau chercher de-ci de-l\u00e0, rien (en C) ne semble correspondre \u00e0 mes besoins. Car en plus je suis difficile, et ne veux pas avoir \u00e0 appeler un programme externe mais pr\u00e9f\u00e8re une biblioth\u00e8que, et si elle permettait de traiter des donn\u00e9es directement en m\u00e9moire, \u00e7a serait encore mieux. Et c&rsquo;est ainsi qu&rsquo;est n\u00e9 ce fameux <a href=\"http:\/\/ctpl.tuxfamily.org\/\">CTPL<\/a> dont je vous parle tout le temps.<\/p>\n<p>Et donc me voici en train d&rsquo;\u00e9crire CTPL, mettant \u00e0 nouveau en pause le <em>plugin<\/em> lui-m\u00eame. Quelques mois passent tranquillement sans en avoir l&rsquo;air\u2026 et finalement, CTPL arrive \u00e0 un stade qui semble utilisable.<\/p>\n<p>Me revoici donc \u00e0 impl\u00e9menter ce <em>plugin<\/em> nouveau, chose enfin possible ! Et les choses se passent tranquillement, entre \u00e9criture et changement de certaines choses dans CTPL, pour arriver finalement au stade actuel : \u00e7a marche plut\u00f4t bien, et le <em>design<\/em> me semble plut\u00f4t sympathique.<\/p>\n<h3>GeanyGenDoc, enfin !<\/h3>\n<p>Et me voici enfin \u00e0 pr\u00e9senter ce <em>plugin<\/em>, le simplement nomm\u00e9 <em>GeanyGenDoc<\/em>.<\/p>\n<h4>C&rsquo;est quoi ?<\/h4>\n<p><em>GeanyGenDoc<\/em> est sens\u00e9 faciliter la r\u00e9daction de la documentation d&rsquo;un code source. Son r\u00f4le est de pr\u00e9parer le terrain pour recevoir ce qui est vraiment utile, c&rsquo;est \u00e0 dire les descriptions et autres explications. Il g\u00e9n\u00e8res donc, \u00e0 la demande, un commentaire de documentation vide adapt\u00e9 \u00e0 ce qu&rsquo;il documente. Par exemple, il pr\u00e9parera un commentaire de fonction <a href=\"http:\/\/www.stack.nl\/~dimitri\/doxygen\/\">Doxygen<\/a> en ins\u00e9rant automatiquement la liste des param\u00e8tres : il ne reste plus qu&rsquo;\u00e0 remplir les descriptions. \u00c9videmment, on peut en faire autant avec les structures, les \u00e9num\u00e9rations, les variables, <em>et c\u00e6tera<\/em>.<\/p>\n<h4>Les fonctionnalit\u00e9s et le reste<\/h4>\n<p><em>GeanyGenDoc<\/em> a \u00e9t\u00e9 con\u00e7u pour \u00eatre \u00e0 peu pr\u00e8s compl\u00e8tement extensible ; ce qui fait que la majeur partie des choses sont configurables :<\/p>\n<ul>\n<li>Utilisation de <em>templates<\/em> d\u00e9finies par l&rsquo;utilisateur pour les commentaires de documentation ;<\/li>\n<li>R\u00e8gles de documentation d\u00e9finies par l&rsquo;utilisateur (s&rsquo;il faut documenter ceci, cela, autre-chose, si c&rsquo;est en fait le parent qui doit s&rsquo;en occuper, etc.) ;<\/li>\n<li>Utilisation de l&rsquo;arbre de tags de Geany comme source de symboles, permettant de g\u00e9rer \u00e0 peu pr\u00e8s tous les langages connus de Geany, et ce sans ajout de code.<\/li>\n<\/ul>\n<p>J&rsquo;en oublie sans doutes, mais voici les choses principales. S&rsquo;il me fallait citer un inconv\u00e9nient \u00e0 ce <em>design<\/em>, je pense que je dirais que son d\u00e9faut vient de son extensibilit\u00e9 et de sa jeunesse : il faut \u00e9crire la plupart des r\u00e8gles de documentation car tr\u00e8s peu sont fournies par d\u00e9faut. Pour le moment il n&rsquo;y a que <a href=\"http:\/\/www.gtk.org\/gtk-doc\/\">GTK-Doc<\/a> en C qui soit g\u00e9r\u00e9 plut\u00f4t correctement par d\u00e9faut, et une petite partie de Doxygen. Mais des r\u00e8gles pour d&rsquo;autres langages ou formats de documentation seront probablement int\u00e9gr\u00e9es par d\u00e9faut au fur et \u00e0 mesure.<\/p>\n<h4>Se procurer GeanyGenDoc<\/h4>\n<p>GeanyGenDoc n&rsquo;a encore aucune version publi\u00e9e, mais la version de d\u00e9veloppement se trouve dans le <a href=\"https:\/\/sourceforge.net\/scm\/?type=svn&amp;group_id=222729\">d\u00e9p\u00f4ts de <em>plugins<\/em> de Geany<\/a>, Geany-Plugins. Amusez-vous, documentez, rapportez des bugs et fournissez des patchs !<\/p>\n<p>Vous pouvez acc\u00e9der au d\u00e9p\u00f4t avec <a href=\"http:\/\/subversion.apache.org\/\">SVN<\/a> :<br \/>\n<code>svn co https:\/\/geany-plugins.svn.sourceforge.net\/svnroot\/geany-plugins\/trunk geany-plugins<\/code><\/p>\n<p>Et m\u00eame avec <a href=\"http:\/\/git-scm.com\/\">Git<\/a> directement (sans m\u00eame avoir besoin de git-svn) :<br \/>\n<code>git clone http:\/\/git.geany.org\/git\/geany-plugins<\/code><\/p>\n<h3>Quelques liens<\/h3>\n<ul>\n<li><a href=\"https:\/\/sourceforge.net\/projects\/geany-plugins\/\">Geany-Plugins sur SourceForge<\/a><\/li>\n<li><a href=\"http:\/\/www.geany.org\/\">Geany, un EDI l\u00e9ger et sympathique<\/a><\/li>\n<li><a href=\"http:\/\/ctpl.tuxfamily.org\/\">CTPL, un moteur de <em>templates<\/em> en C<\/a><\/li>\n<\/ul>\n<h3>Notes<\/h3>\n<ol>\n<li><a id=\"ggd-185-note-1\"><\/a>Non, je ne suis <strong>pas<\/strong> fan, juste que \u00e7a collait bien.<\/li>\n<li><a id=\"ggd-185-note-2\"><\/a>Ou pas d&rsquo;ailleurs, \u00e7a ressemble plus sur certains c\u00f4t\u00e9s \u00e0 un simple \u00e9diteur, de qui n&rsquo;est pas pour me d\u00e9ranger.<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>H\u00e9 bien ces temps-ci mon blog croule sous les articles, va falloir que je me calme moi\u2026 non ? Bon, je vais donc vous parler de mon dernier n\u00e9, qui incube quand-m\u00eame depuis un moment\u2026 Une petite histoire, \u00e7a vous dit ? Une petite histoire\u2026 tout commence il y a bien longtemps, du temps o\u00f9 &hellip; <a href=\"https:\/\/ban.netlib.re\/blog\/lancement-officiel-de-geanygendoc\/\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">Lancement (officiel) de GeanyGenDoc<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,6],"tags":[],"class_list":["post-185","post","type-post","status-publish","format-standard","hentry","category-informatique","category-logiciels-libres"],"_links":{"self":[{"href":"https:\/\/ban.netlib.re\/blog\/wp-json\/wp\/v2\/posts\/185","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ban.netlib.re\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ban.netlib.re\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ban.netlib.re\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ban.netlib.re\/blog\/wp-json\/wp\/v2\/comments?post=185"}],"version-history":[{"count":0,"href":"https:\/\/ban.netlib.re\/blog\/wp-json\/wp\/v2\/posts\/185\/revisions"}],"wp:attachment":[{"href":"https:\/\/ban.netlib.re\/blog\/wp-json\/wp\/v2\/media?parent=185"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ban.netlib.re\/blog\/wp-json\/wp\/v2\/categories?post=185"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ban.netlib.re\/blog\/wp-json\/wp\/v2\/tags?post=185"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}