L'algorithme perl

Généralités

Le script est formé de plusieurs procédures qui sont appelées au moment propice par ce que l'on pourrait appeler "procédre principale" (en fait, le jeu d'instructions  inclus dans aucune procédure... le niveau zéro de la hierarchie du script, en somme).

procédures

the_beginning_of_the_end()

Cette procédure  a pour but de récupérer les chemins et adresses des fichiers à lire et à créer. En cours de développement, il est apparu comme très rentable de rajouter à cette procédure de type output/input (question machine - réponse utilisateur stockée dans une variable) des valeurs par défaut, ce qui a permis de tester les parties ultérieures du script sans rentrer N fois les mêmes instructions.


Demander à l'utilisateur s'il souhaite utiliser les valeurs par défauts

En fonction de sa réponse :

Utiliser les valeurs par défaut

OU

Demander à l'utilisateur quelles valeurs il souhaite utiliser

nota : demander confirmation à chaque étape.
Si les noms de répertoires sont entrés avec un slash (/) à la fin, supprimer ce slash.

tabmaker_general()

Cette procédure crée le tableau-maître (qui contiendra à son tour plusieurs tableaux imbriqués pour arriver à une présentation de cette forme).

L'algorithme se résume à :

OUVRIR le filehandler pointant vers le résultat du script en mode écriture-insertion

Ecrire dans ce fichier le code HTML nécessaire à la création de l'en-tête du tableau-maître

FERMER le filehandler

context_cell()

Cette procédure crée lune cellule en début de ligne de façon à ce que cette cellule contienne la description du sens traité. La subitlité vient du formatage du texte : là où le fichier source indique un sens en majuscules et avec des underscores en guise d'espaces, le tableau résultat devrait avoir des sens écrit proprement (premier caractère majuscule, le reste en minuscules, et un accent sur un a le cas échéant).


OUVRIR le filehandler pointant vers le résultatdu script en mode écriture-insertion

remplacer les _ par le code HTML correspondant à un espace ( ) 

remplacer les A situés entre deux ' ' par un 'à'

mettre toute la chaîne de caractères en minuscules

mettre le premier caractère en majuscule

écrire dans le fichier un code HTML créant une nouvelle ligne, entamée par une cellule contenant la chaîne-sens formatée

FERMER le filehandler

taburl_fr(), tabwget_fr(), tabdump_fr(), tabctxt_fr()
... et les variantes anglaises


Ces procédures sont quasi-identiques. Leur nombre s'explique par la non-utilisation de procédures argumentées et de légères différences. L'algorithme global reste le même :


OUVRIR le filehandler pointant vers le résultatdu script en mode écriture-insertion

Ecrire dans le fichier le code HTML implémentant un tableau gris de 100px de large

pour chaque URL concernée (utilisation de boucle), écrire le code HTML implémentant une ligne d'une cellule dans le tableau précédemment créé.

Dans cette cellule, ajouter un lien vers l'url, le fichier local, le dump ou le contexte concerné.

Ajouter le code HTML pertinent en fonction de l'emplacement dans le tableau-maître (préparer la cellule suivante).

FERMER le filehandler

procédure principale

Ceci constitue le coeur du programme, la suite d'instructions qui appelle les procédures précédemment décrites au bon moment, et qui exécute quelques menues opérations décrites ci-après.


Appeler la procédure "the beginning of the end"
Appeler la procédure "tabmaker general"

initialiser les compteurs d'urls français et anglais

Pour chaque sens (donc chaque fichier compilant des urls) :
    traiter le fichier ligne par ligne.
    si la ligne est  :
        "FR"
            alors initialiser le marqueur FR, neutraliser le marqueur EN, et                 mémoriser l'état du compteur d'urls à ce stade (E0)
        "EN"           
            alors initialiser le marqueur FR, neutraliser le marqueur EN, et                 mémoriser l'état du compteur d'urls à ce stade (E1)
        "http" suivi de n'importe quele chaîne de caractères
            - alors suivant le marquer actif (FR ou EN), stocker la ligne dans             le  tableau de variables correspondant, dans la case                                 correspondant à l'état du compteur d'urls
            - incrémenter ledit compteur d'une unité
       Une chaîne de caractères quelconque (aucun des cas précédents)
            alors appeler la procédure "context cell"

    Une fois toutes les lignes traitées, les urls sont donc stockées dans deux tableaux de variables, l'un contenant les urls de sites en français, l'autre les urls de sites en anglais

    mémoriser l'état du compteur d'urls à ce stade (E2)

pour tout entier E entre E0 et E1 :
    récupérer l'url à la position E du tableau de variables
    utiliser WGET sur l'url en question
    utiiliser la fonction dump de Lynx sur la page wgettée
    utiliser egrep sur le dump
    stocker le résultat de chaque fonction dans un fichier du type                                             url_fr_fonction_E.type

idem pour tout entier E' entre E1 et E2, mais stocker les résultats de wget, dump et contexte dans un fichier nommé :                                                                         url_en_fonction_E'.type

 Appeler les fonctions "taburl"," tabwget", tabdump"," tabctxt", dans leurs versions FR puis EN.


Et puis, passer au sens suivant et répeter la manoeuvre jusqu'à être arrivé à bout des fichiers textes donnés en entrée.