Trivial Web Site (origin, Eric GARREAU) 1) What ? TWS est un truc qui permet de faire rapidement une arborescence HTML "utile", de type Intranet. Quand je dis "utile", je ne prétends pas que les serveurs Intranets sont inutiles, mais plutôt que TWS n'est pas là pour faire des "belles pages" animées avec des plug-ins ActiveX à la pelle... TWS ne produit pas de chichis, mais rien que du contenu : 1- du texte, 2- des images, 3- des liens hypertexte sur d'autres fichiers HTML, des images, des fichiers Word, Excel, TGZ, etc... Et qu'y a t il de special la dedans ? Ca se debrouille tout seul, avec un bete fichier ASCII, si possible tapé à la volée avec un banal 'cat > bof.txt', c'est plus drôle... L'idée de depart est : - pourquoi diable utiliser un éditeur HTML pour faire une documentation "technique" dans laquelle le "contenu" prime sur la présentation ? - quand on veut aller vite, pourquoi se casser la tête à lancer tout un environnement d'èdition HTML, alors que 'vi' ou 'emacs' suffisent ? - pourquoi avoir besoin d'aller à la pêche avec un assistant pour brancher les liens, alors que le nom du fichier auquel on fait référence est suffisant ? Brancher les liens est assez simple : TWS utilise une base associative qui connaît à peu près tout ce qui est disponible dans les arborescences qu'il prend en charge, et il fait ses branchements "en relatif" (c'est pratique si on veut déplacer un bout d'arborescence HTML tout en conservant des liens 'valides'). LE challenge réside dans l'analyse "floue" du fichier ASCII. Comme chaque rédacteur possède dans sa tête sa propre "feuille de style" ASCII, l'analyseur TWS devrait "en théorie"' se débrouiller tout seul pour deviner quel est le style utilisé, et modifier en conséquence ses critères de transformation TXT --> HTML. LE deuxième challenge se cache du côté des branchements de liens hypertextes "à la volée". Pour l'instant, je suis capable de trouver le choix le plus "logique" si j'ai plusieurs solutions possibles, mais il me reste à intégrer le choix "flou", qui autorise les branchements "à la volée" sur des fichiers dont on connaît "à peu près" le nom. J'ai récupéré le module Perl 'Approx', mais il me reste à l'intégrer (pour les longues nuits d'hiver). Comme je n'en suis pas encore là, si il y a des volontaires pour jouer avec moi, ils seront la bienvenue... 2) How ? TWS est écrit en Perl (il fallait bien ca). Le package se compose : 1- d'un démon qui se charge de mettre à jour la base TWS (les branchements "au pif" doivent bien trouver quelque part les "vrais" URL...), 2- d'un convertisseur 'txt2html'. 'txt2html' n'est 'pas' un convertisseur "banal", qui se contente d'ajouter '...' ou détecter automatiquement les URL 'ascii' valides pour les transformer en authentiques URLs 'html' (un peu comme les clients Mail). En fait, il y a une sorte de fuzzy-ascii-logic cablée dedans, et il se debrouille (à peu près) pour en faire quelque chose de présentable. Ces règles empiriques (et personnelles) sont censées refléter ce que le créateur du fichier ASCII a voulu exprimer lors de sa composition. Par exemple : - trouver les titres et les sous-titres, - trouver les listes (numérotées ou non), - trouver les blancs, les traits de séparation, - essayer de mettre en valeur le texte (gras, italiques). Pour les branchements de liens et les inclusions d'images, il fallait bien inventer autre chose que la détection automatique (quoi que, ... j'ai une petite idée la-dessus). En attendant, il y a donc des directives (gasp), mais elles sont les plus simples possibles, car le but est bien de faire comme si tout le texte ASCII était tapé naturellement. Par exemple, il n'y a rien d'anormal a voir dans un texte des '( cf: xxxx)', qui font référence à 'xxxx'. Par le plus grand des hasard, c'est exactement ce que TWS recherche pour faire le lien sur 'xxxx'. Et, cerise sur le gateau, ... TWS se debrouille pour trouver le chemin exact du lien "à la place" de celui qui tape sa doc au kilomètre. Je sais que je veux faire référence à 'xxxx', mais je me f... de savoir où 'xxxx' peut bien être caché. TWS est conçu pour être utilisé par Mr tout-le-monde, sous réserve que le serveur Intranet accepte les directives ' /~Mr_tout_le_monde ' pour accéder aux pages personnelles. Mr tout-le-monde peut alors taper ses pages '.txt' comme il le souhaite, puis utiliser 'txt2html' intéractivement, ou bien laisser faire le démon (qui rôde la nuit, c'est bien connu). Il suffit alors de faire du lobbying auprès du TWSmaster pour que sa page personnelle soit référencéee, et le branchement devient simple comme bonjour. Au hasard, voilà où conduit un 'cf:' sur '/~eg/index' : (cf:/~eg/index). Le demon TWS se débrouille pour "apprendre" le site, ce qui permet de récupérer des morceaux de sites distants avec un aspirateur, puis d'y faire référence sans se poser de question. C'est parfait pour faire des petits exposés simples, qui utilisent des articles de type "veille technique" comme argumentaire. C'est également bien pratique si on veut afficher une des "belles" icônes du serveur HTTP par dessus un lien, pour faire pro. (file: RAH_AAMM.XLT, (inc: application/excel,left)) Par exemple, sous l'icône 'application/excel' se cache un vrai fichier Excel, qui se téléchargera tout seul sur votre client si vous avez l'audace de cliquer dessus (il n'y a pas de virus, c'est juste mon modèle de RAH automatique). En attendant que je publie un tws "propre sur lui", vous pouvez avoir une idée de l'analyseur/convertiseur en jettant un oeil au fichier '(file:tws.txt)' qui a servi a composer cette page. Vous pouvez aussi jetter un oeil a la premiere version de la doc. Elle contient plein d'exemples qui n'existent plus (ce dont j'ai assez honte, d'ailleurs), mais dans l'ensemble il y a de quoi faire : (cf: txt2html). (cf: /index, [Calimero's Root])