Prehtml, version 1.8

Télécharger l'ensemble du projet (sources, exécutable pour linux, et mini-documentation). Ce lien fonctionne sur mon site, mais pas forcément si cette page est recopiée ailleurs! Si ça ne marche pas, essayez http://mjulier.free.fr/prehtml/prehtml-current.tar.gz
(format .tar.gz, à décoder en lançant "tar -zxf prehtml.tar.gz", un répertoire nommé prehtml sera créé, contenant le code source et l'exécutable qui s'appelle simplement "prehtml").

Mais avant d'utiliser ce programme, jetez un coup d'oeil rapide aux questions légales.

Recompilation

Aller dans le répertoire contenant les fichiers source, et taper "make". L'exécutable est créé avec les informations de débogage: pour les supprimer tapez "strip prehtml".

Il faut avoir "make", j'ai utilisé GNU make, mais je pense que ça marche avec n'importe quel make Unix.

Il faut aussi avoir un compilateur C. Par défaut, j'ai mis "gcc", pour en utiliser un autre il faut modifier la ligne "CC=gcc" du fichier Makefile.

Si vous compilez ce programme sur un système non-Unix, je ne sais pas ce que ça peut donner, ni même si ça peut marcher. Testé sur Linux/i386.

Origine du projet

Des difficultés pour maintenir une liste de dépêches d'information sur un site consacré au vélo comme moyen de transport dans la région de Montpellier.

Initialement, chaque fois que je rajoutais une information, il fallait que je modifie une page "actualites.html", en écrivant le texte de la nouvelle information. Puis je rajoutais une cible <A NAME="pistes_etroites"> sur l'article, puis je recopiais le titre en haut de la page d'actualités avec un lien vers cette info <A HREF="#pistes_etroites"> pour retrouver facilement les dernières infos, et enfin je rajoutais cette info sur la page d'accueil "index.html" pour signaler la nouveauté <A HREF="actualites.html#pistes_etroites">. C'était beaucoup de travail à chaque fois, sans compter le travail d'archivage des informations un peu périmées.

Ensuite, j'ai été remplacé par un jeune génie des maths et de l'informatique, qui a automatisé tout le processus avec des scripts Perl et shell dans tous les sens, et quelques utilitaires Unix. Brillant, il faut le dire, mais incompréhensible: j'aime bien le Perl, mais à chaque fois que je m'y remets 3 mois après la dernière fois, j'ai oublié toute la syntaxe. Et le système rendait impossible ou presque l'utilisation d'éditeurs HTML un peu évolués comme Netscape/Mozilla et équivalents.

J'ai donc décidé de faire mon propre système, en me basant sur le langage qui me paraissait le plus simple et le plus connu: le Bourne-Shell, c'est-à-dire le langage de la console d'Unix. Pourquoi ne pas utiliser plutôt PHP? Bon, déjà, ce n'est pas l'usage classique de PHP, que la plupart des gens font tourner sur le serveur; cela dit, rien n'empêcherait de préparer d'abord les pages avec PHP sur sa propre machine, avant de les mettre sur le serveur. Le principal avantage de mon programme par rapport à PHP est celui-ci: je peux éditer mes pages dans un éditeur Wysiwyg (j'utilise Mozilla Composer), et quand je tape "<echo $lien>", mon programme arrive à faire ce qu'il faut même si c'est devenu "&lt;echo $lien&gt;" (codage HTML), ou bien "%3Cecho%$20lien%3E" (codage utilisé dans les liens eux-mêmes). Alors qu'avec PHP, il faut inclure les commandes dans des balises <?php ...>, chose en pratique impossible à faire facilement. Regardez mes exemples, en bas de cette page, pour comprendre ce qu'on peut faire facilement avec mon système.

Si vous connaissez le shell, prehtml vous paraîtra évident. Sinon, vous avez le choix: soit apprendre le shell, soit vous passer de prehtml et trouver une autre solution à vos problèmes. Pour l'instant, je suis à ma connaissance le seul et unique utilisateur de ce programme.

Prehtml est écrit en C standard. Le C++ serait plus adapté mais j'aurais passé plus de temps à m'y remettre qu'à tout faire en C (le langage utilisé dans les microcontrôleurs...). On m'a fait remarqué qu'il aurait été plus simple d'utiliser des analyseurs syntaxiques tout faits: c'est juste, mais je ne connais pas du tout ces choses-là. Et que Perl sait faire tout cela ou presque: c'est exact, mais comme je l'ai signalé, ma mémoire n'arrive pas à retenir la syntaxe du Perl: à force de vouloir englobler toutes les syntaxes existantes dans le monde de la programmation, je trouve que ça perd un peu sa logique. Et je trouve le Perl très difficile à déboguer (peut-être par manque d'habitude).

Syntaxe

Les fonctions sont écrites sous une forme qui ressemble à des balises HTML. Par exemple <SHELL titre="Le vélo">. Bien sûr, ce sont des balises inconnues du HTML! Mais la différence est que si l'on utilise un éditeur HTML, cette balise risque fort de devenir ceci "&gt;SHELL titre=&quot;Le v&eacute;lo&quot;>" (c'est ce que fournit Netscape Composer). Mais ce n'est pas grave, prehtml est prévu pour décoder ce charabia et exécuter la commande tout aussi bien. Cela dit, si la commande est tapée à la main, donc réellement sous la forme <SHELL titre="Le vélo">, ça marche également.

Les commandes prehtml fonctionnent en minuscules ou en majuscules. Mais attention car le shell, lui, fait la différence! "ls" donne la liste des fichiers, mais pas "LS", et si vous définissez "$titre", alors "$Titre" n'est pas défini.

On lance le programme en tapant "prehtml <liste_de_fichiers.prehtml>". Pour chaque fichier .prehtml, un fichier .html est créé (sauf cas spécial mentionné plus bas). Si le fichier source s'appelle .phtm, le fichier créé s'appelle .htm. Si on donne plusieurs fichiers, le programme fonctionne comme si on le lançait successivement avec chaque fichier. Si le fichier qui doit être créé existe déjà et est exactement identique à celui qui devrait être créé, il n'est pas modifié (sa date n'est pas affectée, ce qui est utile pour des programmes automatiques comme Makefile ou sitecopy, utilisables pour créer ou pour télécharger le site).

Trêve de baratin, voici la liste des commandes, leur syntaxe, et des exemples:

Bugs et limitations

Trucs et astuces

Pour m'en sortir entre les extensions, j'utile ces conventions: Pour lancer prehtml, il y a au moins deux bonnes méthodes: Pour transférer les fichier sur le serveur j'utilise "sitecopy" (un programme gratuit). Pour ne transférer que les bons fichiers, le fichier de configuration ~/.sitecopyrc contient les lignes suivantes:
exclude "*.htm"
exclude "*.prehtml"
exclude "*.tmp"
exclude "Makefile"

Questions légales

Tout le monde a le droit d'utiliser ce programme, de le recompiler (en enlevant les informations de débogage par exemple...), de l'adapter à d'autres systèmes d'exploitation, de le modifier pour son usage ou pour l'usage d'autrui.
Les limitations sont les suivantes:

Historique

Moi

J'ai une page ici.

Adresse de cette page: http://mjulier.free.fr/prehtml/lisezmoi.html