Du libre, du code, des idées, du mélange d’ArraKISS…

De l’épice pour la pensée

Je me suis replongé dans le code de swx suite à mon passage en "tout txt2tags". Et là, quelle horreur! je me demande si on ressent la même chose à chaque fois qu'on retrouve un vieux code. Il y avait (et reste sûrement) un tas de choses très moches et inutiles.
J'ai donc redressé mes manches (façon de parler, avec le soleil j'ai un t-shirt) et repris la suite de petits scripts qui font swx. Au menu des changements :

- Plus besoin de rsync
- Ajout de swx_blog qui permet de mettre dans une page la liste des articles récents;
- Ajout d'une barre de progression sommaire;
- Le flux rss généré avec swx_rss est plus propre et lisible par les lecteurs de flux;
- Possibilité de davantage configurer le site produit;
- Amélioration du Makefile plus facile à lire, et donc à modifier.

Il reste certainement à faire, mais c'est déjà plus facile à personnaliser et à hacker.

ps : en parlant de txt2tags, son export en plain text m'a permis de créer un clone de ce site sous gopher. Hi hi ☺. Mais si, vous savez, ce monde parallèle au web désuet qui permet certainement aux terroristes (enfin ceux qui ont un peu de jugeote, pour peu que ça existe) d'échanger des informations plus discrètement qu'avec le réseau tor. (malgré ce qu'on veut nous faire croire afin de retirer nos libertés "pour notre bien")...

C'est le ménage de printemps! J'en profite pour nettoyer un peu mon site des pages inutiles ou obsolètes. Il reste du boulot me direz-vous.

Au passage, j'ai convertit mes fichiers sources au format txt2tags, puisque je ne compte plus faire de mini-entrées de blog mais davantage écrire du contenu. La conversion de markdown vers txt2tags est pénible. On trouve dans le wiki de txt2tags un script qui marche moyennement, que j'ai légèrement modifié :

#!/bin/sh
# https://github.com/txt2tags/tools/blob/master/markdown2txt2tags.sh
# modified by thuban <thuban@yeuxdelibad.net>

# This script converts from markdown to the txt2tags format.
# It requires:
#   - markdown converter
#   - html2wiki http://search.cpan.org/~diberri/HTML-WikiConverter-0.68/bin/html2wiki
#   - txt2tags export for html2wiki http://wiki.txt2tags.org/index.php/Main/Html2wiki
#       cpan install HTML::WikiConverter::Txt2tags

case $1 in
	"")
	echo -e "Usage: markdown2txt2tags.sh file_in_markdown_format.md"
	;;
	*)
    j="${1%.*}"
	echo "\n\n\n" > "$j.t2t" 
	markdown "$1" | html2wiki --dialect Txt2tags |sed -r -e "s@^=@\n=@g" >> "$j.t2t"
	;;
esac

Il faut quand même éditer certains fichiers à la main pour corriger des erreurs ensuite.

Ensuite, j'ai modifié la configuration de swx qui me sert à générer le site. Dans le swx.conf, j'ai désormais :

CONVERTER='txt2tags -t html -H -o -'
EXT=".t2t"

J'ai pu découvrir un petit bug au passage.

En bonus, j'utilise les instructions "préprocesseur" de txt2tags pour convertir certains morceaux de texte en symboles automatiquement. Dans le ~/.txt2tagsrc :

% The ^ need to be escaped by \
%!postproc(html):  \^\^(.*?)\^\^  <sup>\1</sup>
%!postproc(html):  ,,(.*?),,      <sub>\1</sub>
%!postproc(html):  ":\)"      "☺"
%!postproc(html):  ":\("     "☹" 
%!postproc(html):  ":P"     "😋 "
%!postproc(html):  ":D"      "😃"

%%% Set the default encoding for all documents
%!options: --encoding UTF-8

Et comme avant, swx génère mon site, ses pages html et le menu les reliant, je n'ai plus qu'à tout rsynciser vers mon serveur ☺.
Ça sera suffisant pour l'instant.

Ce qu'il me manque désormais, c'est un mini-CMS ou mini-Blog ou mini-moteur qui me permettrait décrire en txt2tags. Pas de petits billets comme celui-ci, mais des histoires. où chaque "billet" constituerait un chapitre... Quelqu'un connaît un truc du genre? Ou je tente, moi le gros noob en PHP, de modifier krissblog?

Je suis actuellement en train d'écrire un ouvrage assez long. C'est l'occasion pour moi de redécouvrir txt2tags. Et bon sang, que c'est génial!

Il s'agit d'un langage markup. En gros, ce que vous écrivez n'est pas ce que vous obtenez à la fin, dans le même principe que markdown ou LaTeX qui produisent respectivement des pages web html ou des pdf de qualité. Par exemple, si vous écrivez ceci :

Il ne **faut pas** respirer de la compote : ça fait //tousser//

On obtient après conversion par le logiciel txt2tags ceci :

Il ne faut pas respirer de la compote : ça fait tousser.

Alors que je trouve markdown excellent, txt2tags le dépasse très largement à mon avis, et je pense avoir du mal à m'en passer désormais, et ce pour plusieurs raisons.

1. Tout d'abord, c'est un langage markup lisible. La preuve :

markdown              LaTeX                      txt2tags
**gras**            \textbf{gras}                **gras**
*italique*          \textit{italique}            //italique//

Ça facilite l'écriture et la correction. Imaginez retrouver une coquille dans un langage comme le LaTeX!

2. Il supporte des balises comme le souligné, le barré, les tableaux par défaut. On peut même faire des ancres dans le texte pour relier rapidement un mot à un paragraphe

Pour plus d'informations, lire [le paragraphe correspondant #superparagraphe].
[...]
===Le super paragraphe===[superparagraphe]

3. Il permet d'exporter son texte dans de multiples langages, comme le LaTex, le html, mais aussi dokuwiki et bien d'autres. Ça peut paraître idiot, mais un document que j'écris un jour pour une page html pourrait très bien prendre place plus tard dans un wiki, voire faire l'objet d'un document à imprimer (donc LaTeX). Je vous jure que alors qu'on pense ne pas avoir besoin de ce genre de choses, c'est lorsque ça s'impose qu'on regrette de ne pas l'avoir utilisé.

4. On peut inclure d'autres fichiers avec %!include: fichier.t2t

5. C'est très simple de rajouter des balises personnelles. Pour, par exemple, supporter les exposants et indices dans un document html, on met ceci au début du fichier txt2tags :

%!postproc(html):  \^\^(.*?)\^\^  <sup>\1</sup>
%!postproc(html):  ,,(.*?),,      <sub>\1</sub>

Ici, txt2tags va remplacer les "^^" et les ",," par les balises html appropriées après la conversion. Et on en arrive au truc le plus génial de txt2tags : les instructions pré-conversion.


6.
Imaginons que dans mon document, je fasse plusieurs fois référence à un ouvrage ou un site internet. À chaque fois que j'en parle, je devrais ajouter les balises qui vont bien :

Exemple en markdown
voici un nouveau site à lire absolument qui s'appelle [volted](http://volted.net/). On y trouve des informations sur OpenBSD, rédigées avec amour par sogal.
[..]
[..]
On remarque d'ailleurs que [volted](http://volted.net/) est propulsé par blogotext.

Eh bien avec txt2tags, ça ressemblerait à ça :

%! preproc: volted "[volted http://volted.net/]"
Exemple en txt2tags
voici un nouveau site à lire absolument qui s'appelle volted. On y trouve des informations sur OpenBSD, rédigées avec amour par sogal.
[..]
[..]
On remarque d'ailleurs que volted est propulsé par blogotext.

C'est vraiment génial. Si par exemple on veut faire un renvoi dans son texte plusieurs fois à un autre paragraphe, le preproc est parfait. On peut aussi l'utiliser pour remplacer rapidement plusieurs parties du texte identiques en ne modifiant qu'une seule ligne.

Si vous n'avez pas d'éditeur de texte sous la main, vous pouvez l'essayer ici.. Il y a même une bibliothèque php pour vos sites si vous voulez!
Un CMS ou un blog qui utiliserait ce langage serait vraiment une perle!