Specification du pim

créé le: 20190301
mis à jour le: 20190201
généré le:20191124_225043
Specification du pimsommaire pim spe txt  Specification de utags

Spécification de utags 

  • documentation technique utags  le programme C utags c analyse la base textuelle mentor et met à jour l'index utags équivalent du fichier tags de la commande unix ctags
  • documentation technique utags pm  module perl de recherche dans la base hypertexte utags

    Reference hypertexte

    Lors de la recherche de références hypertextes on pourra effectuer plusieurs recherches si la recherche directe ne donne pas de résultat:

  • recherche sans les accents, Lors de l'ajout le fichier des étiquettes si dans une étiquette il y a des accents, on enregistrera deux étiquettes, la réelle et celle privée d'accents.
  • recherche sur une partie de la référence.

    Spécification de domaine 

  • Les domaines sont gérés par un fichier d'extension ".dom" contenant une liste dont les éléments sont les chemins des fichiers
  • Les fichiers domaines se trouvent sur le directory %UTAGS%\dom

    On traite successivement chaque fichier domaine.
    Pour chaque nom de domaine, une reference hypertexte sur le fichier domaine est générée.
    La liste domaine est réecrite en fin de traitement, et il est édité un fichier texte contenant la liste des références hypertexte pour chaque domaine. Cette liste est accédée elle-même par la réference hypertexte domaine.

    Arborescence des domaines sous la forme de références hypertexte.

    Aprés avoir constitué la liste des sources sous la forme de branche (cf branche spécification de ListeFichierCharger ) on édite les références hypertexte permettant de naviguer dans cet arbre.

    algorythme:

  • boucle sur la lecture séquentielle de la liste tant quelle n'est pas vide.
  • boucle de lecture séquentielle de la liste des sources.
  • en rupture sur la première colonne (délimiteur :) si on n'est pas en début de liste: on ferme un bloc on édite une étiquette hypertexte avec le nom de cette colonne.
    on ouvre un bloc.
  • on édite une référence hypertexte sur la deuxième colonne si on est en rupture sur celle-ci.
  • si la deuxième colonne est terminale ( délimiteur | ) on supprime l' élément de la liste.

    Enregistrement domaine

  • un élément de la liste des fichiers d'un domaine est en fait un enregistrement CSV cf enregistrement domaine  dont le premier champ et le chemin du fichier.
  • les autres champs de l'enregistrement domaine sont:

    Type de domaine

    Domaine reference

    un domaine de type référence est un domaine dont les fichiers ne sont pas analysé par utags_exe (utags_c) c'est à dire qu'ils ne sont pas indexé dans la base hypertexte utags.

    Domaine repertoire

    Le domaine répertoire est une spécialisation du domaine mentor et reflète le contenu d'un répertoire du système.

  • 07/09/2011 évolution de domdir via traite csv pl le tableau ci-dessous alimente à partir de la commande "dir" les lignes du tableau en évitant les générés htlm et les fichies backup et en renommant le chemin de base avec la variable d'environnement La connexion entre le domaine et le répertoire se fait par une commande dir intégrée à un tableau csv.

    Tableau domdir 

  • les colonnes titre, filtre et profondeur sont associés à la structure des domaines mentor enregistrement domaine

    Tableau domdir simple  todo: il doit y avoir un atelier generique qui fait le dir à partir d'un paramètre et qui est appelée par CSV_INS dans les tableaux domdir pour conserver les colonnes manuelles

    filepath  titre  filtreprofondeur
    %BASE%\bacasable\test-renommage-fichier.txt  fichier de test    
    nbr        
    tableau domdir simple  chemin complet du fichier        
    1.000000      

    Tableau domdir date et taille fichier : utiliser pour les listes de fichiers dans les domaines mentor cf extensio_lst

    filepath  titrefiltreprfddat_mod  taille     dat_cre  dat_mod_ini
    %BASE%\bacasable\test_renommage_fichier.txt        20140409_16231212  20140409_172306  
    nbr        nbr  som      
    filename        dat_mod  taille      
    1.000000      1.000000  12.000000      

  • pour liste hors domaine mentor

    filepath  dat_mod  taille     dat_cre  
    %BASE%\bacasable\test-renommage-fichier.txt  20140409_17231212  20140409_172306
    nbr  nbr  som    
    tableau domdir date et taille fichier  chemin completdat_mod  taille    
    1.0000001.000000  12.000000    

    Tableau domdir date taille et lien fichier 

    filepath  titrefiltreprfddat_mod  taille     dat_cre  lien  dat_mod_ini  
    %BASE%\bacasable\test_renommage_fichier.txt        20130223 112520  020130223_122520test renommage fichier txt 20130223_112520
    nbr        nbr   som      
    filepath        dat_mod   taille      
    1.000000      1.000000   0      

    Tableau domdir basename 

    filepath  titrefiltreprfdbasename  extension  path  filename  
    %BASE%\bacasable\test-renommage-fichier.txt        test-renommage-fichiertxt  g:\mt\bacasable\ test-renommage-fichier.txt
    nbr                
    tableau domdir basename  chemin complet du fichier                
    1.000000              

    Tableau domdir renommage atelier renommage normalise fichier 

    filepath  dat_modtaille     dat_credat_mod_ini
    nbr  nbr  som      
    filename  dat_modtaille      
    0.0000000.000000.000000      

    filepath  titrefiltreprfdchemin avec non normalisé fonction nnf  comparaison nom fichier actuel et nom fichier normé (vide si égal)  commandes de renommage    pour exécuter les commandes de renommage, supprimer le undersrore de la formule
    %BASE%\bacasable\test-renommage-fichier.txt        g:\mt\bacasable\test_renommage_fichier.txtg:\mt\bacasable\test-renommage-fichier.txt|g:\mt\bacasable\test_renommage_fichier.txtmove "g:\mt\bacasable\test-renommage-fichier.txt" g:\mt\bacasable\test_renommage_fichier.txt    
    nbr          nbr    nbr  
    tableau domdir ren  chemin complet du fichier          comparaison nom fichier actuel et nom fichier normé (vide si égal)        
    1.000000        1.000000    0.0  

  • 08/03/2017 14:53:27 renomage d'une liste à inserer

    filepath  chemin avec non normalisé fonction nnf  comparaison nom fichier actuel et nom fichier normé (vide si égal)  commandes de renommage  pour exécuter les commandes de renommage, supprimer le undersrore de la formule
    nbr    nbr      
    filename    comparaison nom fichier actuel et nom fichier normé (vide si égal)      
    412.000000  88.000000      

    old Tableau domdir grep  cf atelier grep 

    Domaine domdir gde local dom maj

    :time,20171121_133757:
    chemin_complet  titrefiltreprofondeurdat_modtaille     dat_cre

    Commande test renommage fichier 

    REM commande pour restauration de l'état initial de test de tableau domdir  dir d:\mt\bacasable g:\mt\bacasable touch %BASE%\bacasable\test-renommage-fichier.txt echo 123456789>%BASE%\bacasable\test-renommage-fichier.txt move %BASE%\bacasable\test_renommage_fichier.txt %BASE%\bacasable\test-renommage-fichier.txt

    La connexion entre le domaine et le répertoire se fait par une commande dir de recherche de la balise "Domdir " qui permet de reconstituer la liste des fichiers du domaine à partir de la macro fdlr.
    (ou bien la macro fdlR qui a un filtre moins restrictif cf FdlR )

    La chaine de recherche doit se trouver dans une ligne du domaine, par exemple:

    
    
    #domdir;dir /b /l /s c:\temp;
    #
    

    #

    
    
    #domdir;dir /b /l /s E:\MQSeries\Qmgrs\q | sed -e "/xmitq/d" 
    
  • e "/ghost/d"
  • e "/dead/d"
  • e "/system/d"
  • e "/mangled/d"
  • e "/testspl/d"; #

    #

  • Ce domaine contiendra tout les fichiers mp3 présent sur le sous-répertoire fic\mp3 du répertoire de base.

    Spécification de sommaire 

    Référence sources:écriture du sommaire SommaireEditerSommaireLigneAjouter

    Pour chaque module on enregistre dans un texte ou une liste les références hypertexte avec les niveaux d'accolades. S'il y a des résumés on les prends aussi ( cf détection étiquette).

    Le sommaire est stocké dans un fichier à part .

    Cette fonctionnalité devrait exister de manière indépendante pour pouvoir l'appliquer sur un bloc.

    le 15/02/1997 à 16:17:45 le fichier externe du sommaire doit être placés dans un directory spécial identifié par une variable d'environnement PATH SOM.

    La liste sommaire est une liste au format CSV non triée comprenant les champs suivants:

  • niveau de bloc de l'étiquette
  • étiquette
  • commentaire du bloc .

    édition sommaire alg

    Le sommaire est édité par la fonction SommaireEditer.
    On édite l'étiquette du sommaire puis les références dans l'ordre de la liste à l'intérieur d'un bloc unique. Les étiquettes sont indentées par des tabulations (caractères paramétrables) en fonction du niveau de bloc.

    Zoom sommaire

    le 12/05/1997 à 10:43:15 - à faire Lorsque un sommaire est trop grand, on ne voit plus le regroupement de certain niveau d'accolades car il sont séparé par les références d'un nombre important d'étiquettes de bloc de niveau supérieur.
    Comme le sommaire est enregistré dans une liste, on peut lors de l'édition de cette liste déterminer si un niveau ne sera pas lisible.
    Dans ce cas on éditera un bloc avec les références de ce seul niveau comme pour le sommaire général.

    Sommaire zoom alg

    Algorythme: pour chaque element de la liste Sommaire, si rupture sur niveau alors boucle de recherche du nombre d'element de meme niveau dans le bloc (la fin de rupture arrive lorsqu'on rencontre un niveau inférieur au niveau traité).
    pour ce niveau d'accolade, si les références de ce niveau sont séparés d'un nombre de ligne supérieur à un écran, alors on édite un bloc avec seulement des références de ce niveau On edite ensuite la référence correspondant au niveau traité et on continue.

    Il y aura donc un paramétre pour le utags.ini qui est la taille en ligne de la fenetre d'affichage.

    On aura donc la vision globale de n'importe quel niveau dans le sommaire, dans un seul écran.

    Spécification de propriété des fichiers de l'arborescence des domaines 

    but:

    On veut gérer des propriétes au niveau des fichiers et des extensions des fichiers qui participent à l'arborescence pour piloter celle-ci.

    liens: spécification de champs dans les listes spécification de enreg  champs dans les listes

    Une propriété pourra être un champ entier d'une liste (liste de fichier ou d'extension). La valeur par défaut d'une propriété sera VRAI, c'est à dire que l'élément correspondant participe pleinement à la propriété.

    On considéra la valeur 0 comme valeur neutre, si la valeur lu de la propriété est zéro ou n'est pas défini (vide ou blanc) alors la valeur renvoyé de la proprièté sera zéro, comme la valeur par défaut est VRAI la propriété sera VRAI car la valeur neutre de la propriété n'infirme par la valeur par défaut.
    Les valeurs négatives seront utilisées pour nier cette propriétés aux éléments avec plusieurs niveaux de négation selon les cas. Les valeurs positives seront réductrices de la valeur du zéro, mais dans le cadre de la participation à la propriété.

    On doit faire évoluer la liste Extension pour qu'elle ne contiennent pas seulement l'extension du fichier mais les propriétés qui s'y rattachent.

    On doit faire évoluer la liste Source pour qu'elle ne contiennent pas seulement le chemin du fichier mais aussi des propriétés du fichier.

    Compatibilité avec les listes simples (un seul champ par enregistrement).

    Si on modifie les listes il faut faire attention à ce que partout où on utilise l'élément comme unique champs, on puisse spécifier par défaut le premier champs (compatibilité). La compatibilité est assuré par le fait que la fonction qui lit la valeur de la propriété ChampEntierLire renvoie la valeur 0 pour la propriété si le champ lu n'y figure pas.

    Il y a deux niveaux pour la définition d'une propriété pour un fichier.
    La propriété générale au niveau de l'extension du fichier, la propriété au niveau du fichier lui-même dans le fichier domaine.
    La propriété au niveau fichier est une surcharge de la propriété au niveau extension. Le neutre est utilisé pour rendre un niveau transparent par rapport à une propriété. La surcharge au niveau fichier détermine la propriété sauf si elle est neutre.

    Propriétés des extensions (extensio lst) ou des sources (domaines .dom)

    Filtre fichier

    La première de ces propriétés est un entier qui exprime la participation ou non au système de gestion des fichiers:

  • 3 signifie qu'on ignore complétement le fichier et qu'il ne participe plus même par son nom au système.

  • 1 signifie que le fichier est pris mais ne participe pas à l'export du système (c'est le cas des fichiers locaux qui ont le même nom sur plusieurs machines mais qui ne sont pas identiques en contenu).

    0 signifie que le fichier est pris sans restriction

    Profondeur d'analyse

    La deuxième propriété est un entier qui exprime la profondeur d'analyse de blocs de fichier.

  • 3 signifie que le fichier n'est pas analysé et ne figure pas dans les sommaires et ne possédent pas de référence hypertexte.

  • 2 signifie que le fichier n'est pas analysé mais néamoins figure dans les sommaire et à une références hypertexte qui dirige sur son chemin dans le fichier domaine.

  • 1 signifie que le fichier n'est pas analysé mais néanmoins figure dans les sommaire et à une référence hypertexte pour accéder au fichier - seule référence.

    0 signifie que le fichier est complétement analysé par utags et que toutes les étiquettes hypertextes sont prisent en compte.

    1 et au delà correspond au niveau de profondeur d'analyse de blocs.

    Gen html

    Booléen indiquant si on doit générer un document html à partir du fichier.

  • 3 signifie que l'on ne génére pas l'html et que l'on fait pointer la référence html directement sur le fichier source

  • 2 signifie que l'on ne génére pas l'html mais que l'html existe par ailleurs avec le nom normalisé cf spécification de génération de page html  ou que le lien pointe directement sur le fichier qui s'ouvrira avec l'application adéquate.
    Cela signifie que dans le sommaire, la référence HTML pointera sur le fichier pré-existant au nom normalisé.
    (pour extension htm par exemple)

  • 1 pas de génération et pas de lien vers le fichier source

    0 génération totale

    1 signifie que l'on génére le fichier html en créant les références et les étiquettes, mais que l'on conserve sur la totalité du fichier la mise en forme du texte. cf balise PRE.

    Le source comm 

  • spécifie dans le cas d'un fichier source la forme du commentaire par une ou deux chaines séparées par une virgule.
  • si une seule chaine est présente alors c'est que la deuxième chaine est un retour chariot: ligne commentaire.
  • cf spécification de gestion des commentaires pour les sources 

    Algorythme de construction du sommaire général

    Pour rendre le sommaire général plus convivial, il est nécessaire d'inclure le titre du fichier et non plus seulement le nom du fichier. On ajoute le titre du fichier dans la liste Source par memorisation titre fichier pour sommaire général.
    On considère que le titre d'un fichier est le premier commentaire d'étiquette mentor que l'on rencontre dans le fichier, voir texte structuré.

    On crée une liste Arbre équivalente dans sa structure à la liste Source mais qui est sauvegardée dans arbre.txt. Ceci permet d'avoir une liste complète de tout les modules même si on ne traite que les fichiers modifiés ou un sous-domaine car le titre est mis à jour dans Source seulement si le fichier est analysé dans TexteAnalyser.

    (cf fusion de Source dans Arbre et sauvegarde, allocation d une liste pour l'arbre général de l'hypertexte.) Dans le module nomfic, on charge dans Source le titre s'il est présent. Le titre dans un fichier domaine est en position 2 ce qui n'est pas le cas dans la liste extensio lst cela pose un probleme pour la fonction ProprieteFichierLire Le problème vient du fait que les colonnes sont identifiées par des nombres cf evolution enreg 

    La liste Arbre contient comme premier champ l'arborescence des domaines, c'est à dire pour chaque ligne, le chemin des domaines pour arriver à la feuille terminale.

    L'édition du sommaire général est une double boucle sur cette arborescence.
    ( cf construction de l'arbre de navigation dans l'hypertexte ) La première boucle à pour fonction de lire la liste Arbre avec une vue de plus en plus détaillée en se déplaçant à chaque itération dans la profondeur de l'arbre. On édite ainsi le sommaire pour le domaine racine, puis on passe à chaque sous-domaine du domaine racine dans la deuxième itération et ainsi de suite jusqu'à arriver en fin de profondeur de l'arbre.
    (cf parcours de l'arbre dans le sens de la profondeur)

    On edite une étiquette de domaine lorsque l'on détecte la rupture sur etiquette On edite une référence de fichier ou domaine lorsque l'on détecte la rupture sur référence

    Editer le titre d'un fichier terminal (feuille) est facile car cela se fait localement. Par contre pour le titre d'un domaine, on ne sait pas ou est la ligne correspondant au fichier domaine dans la liste Arbre.

    La liste est traitée séquentiellement et elle n'est pas triée de façon à faire apparaitre le fichier domaine en rupture première sur un domaine.
    Ceci provient de l'algorythme de lecture de la fonction ListeFichierCharger et de la façon dont sont constitués les fichiers domaines.

    Une solution est de rajouter le titre du domaine dans la liste LstDom.
    La liste Domaine doit être maintenu de la même manière que la liste Arbre, c'est à dire chargée au début, mise à jour par la liste Source et sauvegardée à la fin.

    Une autre solution consiste à rajouter le champs tag à l'enregistrement de la liste Arbre (cf enregistrement Arbre ) de façon à accéder de manière indéxé à cette liste. Par contre on détruit ainsi l'ordre naturel de cette liste (par domaine) ce qui ne permet plus de détecter les ruptures ci-dessus évoquées.
    On peut par conséquent créer une fonction d'indexation de la liste (index secondaire).

    Spécification de génération de page html 

    La génération des pages HTML nécessite lors de l'analyse de non seulement détecter les étiquettes mais aussi les références. Le couple de délimiteur "" est ajouté à l'argument tagDel de la fonction TexteAnalyseranalyse utags du fichier. Ajout de la détection référence (cf définition du bloc structurel).

    Il faut déterminer pour un type de fichier si la génération HTML est demandée.
    On ajoute donc un champ dans la liste des extensions extensio lst On généralise en créant une fonction de lecture des propriétés spécification de ProprieteFichierLire 

    Si on doit générer le fichier au format html, celui-ci aura un nom construit à partir du nom du fichier. On transformera l'extension du fichier en suffixe du nom et l'extension de la page html sera .htm. (cf basename c) Par exemple pour sommaire.txt on aura sommaire_txt.htm.
    On retrouvera ainsi facilement l'étiquette du fichier origine à partir de la page HTML, ce qui rend aisé l'accés au fichier si on veut faire une mise à jour par exemple.

    utags csommaire utags c  détection référence

    La génération de l'intranet correspondant à l'hypertexte mentor est composée de trois éléments:

  • Le sommaire général html. cf construction de l'arbre de navigation dans l'hypertexte
  • Le sommaire de chaque fichier. cf écriture du sommaire
  • La génération des pages html. cf TexteAnalyser

    Le code HTML doit pouvoir être paramètré facilement sans recompilation du programme utags. Il faut donc prévoir une liste composée des éléments de la syntaxe html. La liste sera composée d'enregistrements dont les champs sont:

  • l'identifiant de l'élément syntaxique.
  • l'élément syntaxique lui-même.
    Le lien entre le programme et la liste sera l'identifiant de l'élément syntaxique. C'est donc lui qui est codé en dur dans le programme utags.
    cf chargement des paramètres syntaxique html.

    l' option -w de main utags permet de demander la génération html.
    Elle est conditionnée par la variable gen html.

    Le point central de la génération de l'intranet est la recherche du tags correspondant dans le fichier tags utags.

    Sommaire général html

    références: algorythme de construction du sommaire général construction de l'arbre de navigation dans l'hypertexte

    Dans l'édition des liens hypertextes du sommaire général, les liens pour les étiquettes des domaines sont des liens intrapages, les liens pour les fichiers terminal de l'arborescence pointe vers les sommaires des fichiers. Les liens pour les références aux sommaires des fichiers ne nécessitent que le nom du fichier disponible à travers la référence éditée (cf récupération du chemin du fichier source traité) et le chemin des sommaires représenté par la variable PATH SOM.

    edition de la référence html du domaine ou du fichier terminal On fait la distinction entre une référence intrapage vers un domaine dans le sommaire général (cf reference intrapage de domaine) et une référence vers un sommaire de fichier par le niveau de l'arbre des domaines cf (reference vers sommaire).

    On peut éditer la référence vers le fichier à coté de la référence vers le sommaire.

    Sommaire fichier html

    17/03/2002 écriture du sommaire

    L'évolution en cours zoom sommaire étant moins urgente que la génération html, on supprime le code de cette évolution qui va dans le source zoom sommaire  Par contre on réutilise la fonction SommaireEditer pour y intégrer l'édition du sommaire html, car la simple fonction ListeSimpleDecharger ne suffit plus.

    La liste Sommaire doit être remaniée pour ne plus contenir le texte brut du sommaire à éditer. On reprend la spécification spécification de sommaire 

    Génération des pages html

  • initialement prévu dans TexteAnalyser (fabrication des sommaires) la génération des pages html à été implémenté dans mt to htm pl
  • Le point central est la détection référence
  • L'idée de base est de générer une mise en forme HTML trés convenable à partir de balise discrète et restreinte visible dans le document texte source.
  • Il faut donc déterminer un ensemble de règles de mise en forme.

    Langage de balisage leger mentor Spécification de règles de mise en forme texte source 

  • La forme globale du texte est une encapsulation de bloc de texte une numérotation du document HTML sera générée à partir du niveau de profondeur des blocs, ainsi que la taille des titres de bloc.

  • Le bloc structurel définit les étiquettes et les références HTML

    Modifieur de bloc: spécialisation des blocs de texte

    Modifieur d'affichage du texte: altération de l'affichage du texte cas modifieur d affichage

  • Un texte entre parenthèse suivi d'une étoile Nouveau:
    apparaîtra ) dans une couleur spéciale avec la mention "nouveau". cf cas nouveaux.
  • Un texte entre parenthèse suivi d'un signe pourcent ( apparaîtra ) dans une couleur spéciale. cf cas couleur.
  • Un texte entre parenthèse suivi d'un signe ¤ Obsolète:
    apparaîtra ) dans une couleur grisé avec la mention "obsolète". cf cas obsolète.

    Gestion des caractères en gras

  • Un texte entre parenthèse suivi d'un point d'exclamation apparaîtra en gras.
  • Un mot suivi d'un deux points doublé en fin de ligne apparaît en gras.
    gras:: L'utilisation du caractère nbsp (no break space) permet de transformer une phrase en mot unique (cf macro epw) !

  • on peut préciser un code couleur par la syntaxe suivante: _couleur_hexa ... texte cf tableau couleur .

  • Une étiquette de type  

  •  

  •  hil Html inline l'ajouter qu'un spécification de html inline 

  • Commentaire de bloc indiquera que l'on concaténera l'étiquette ainsi que le commentaire dans l'étiquette HTML.
    Spécification de traitement des infixes 
    • La présence d'un infixe en préfixe dans une étiquette HTML devrat provoquer le remplacement du préfixe par son libellé trouvé dans la table Infixe pour constituer le texte de l'étiquette HTML. Le libellé est inserré en début de texte et le préfixe supprimé.
    • 12/05/2005 certain infixe comme "des" pour descriptif sont homonymes d'un mot qui peut apparaître dans une étiquette. Par contre en terme de suffixe, il n'y a pas d'ambiguité. Donc il faut prévoir dans la table des infixe, un indicateur qui signifie "suffixe seulement" et par la même prévoir "préfixe seulement"

    Numérotation des chapitres

    Les blocs sont édités en tant que chapitres. En gérant une table de comptage des chapitres par niveau on peut éditer une numérotation de chapitre.
    L'indice de la table doit être le niveau de bloc. Si on incrémente nu niveau de bloc les niveaux de bloc supérieur (plus grand détail) doivent être réinitialisé. Il faut construire la chaine de numérotation par une boucle sur cette table jusqu'au niveau du bloc.

    Saut de page

    le caractères ascii "form feed"

    
     dec:  12  oct:  014  char:  ^L  FF    hex:  0c  bin:  1100 
    qui réalise un saut de page dans l'envoi du texte brut à l'imprimante générera un paragraphe avec la propriété universelle "style" pour déclancher un saut de page lors de l'impression du document html. la valeur de la propriété style est "page-break-before: always;"

    Pour rendre visible le saut de page à l'écran on peut utiliser la balise HR: ligne de séparation.

    cf cas saut de page.

  • L'implémentation de la génération des pages HTML est faite en langage perl par le script mt to htm pl. Dans génération de la page html on écrit une liste fichiers traités dont les pages HTLM sont à générer. Cette liste LstGenHTML est crée dans chargement des paramètres syntaxique html.
    En fin de programme le fichier est écrit et la commande perl mt to htm pl est lancé pour générer les pages.
  • Spécification de commentaire mentor html 
    • la forme d'une étiquette de bloc de texte impose que le commentaire de bloc suive exactement l'étiquette.
    • le contrôle des différents élément dans la génération html se fait par la reconnaissance des séparateurs de bloc
    • dans ce cas il faut aussi utiliser les séparateurs de mot: une condition supplémentaire est que le précédent séparateur de mot doit être ">" lorsqu'une parenthèse ouvrante doit être considéré comme le début d'un commentaire de bloc.

    Spécification de environnement utags  

  • todo: 03/05/2005 on introduit la variable UBASE qui contient le nom de la variable d'environnement qui définit le chemin de la base mentor.
    Cette variable n'est normalement pas connu de utags mais il devient nécessaire qu'elle le deviennent afin de l'utiliser dans les fichiers utags et urefs pour les chemins de fichier, rendant ainsi le fichier tags portable. Ceci est nécessaire pour utiliser mentor sur une clé USB ou le nom de la lettre de montage disque n'est définie qu'au branchement. La présence de la valeur de UBASE dans le fichier utags plutôt que la valeur de la variable d'environnement qu'elle contient rend le fichier utags indifférent par rapport à la lettre de montage de la clé USB.

    Spécification de tritex 

    Le tri d'un texte s'opère par le chargement du texte par bloc dans une liste.
    Chaque élément de la liste est en fait un bloc de texte référencé par une étiquette.
    Pour cela il faut une nouvelle fonction de chargement de liste. Cette fonction utilisera le module de lecture "fichier" pour la lecture des éléments de la liste. Un argument permettra de définir les délimiteurs de bloc.

    Spécification de formatex 

    Il y a différents formattages possibles:

  • passage d'un mode texte ascii au mode word de Microsoft,
  • reformatage d'un texte ascii pour la longueur des lignes.

    Dans les deux cas il y a des règles sur la forme du texte:

  • on conserve la forme de l' hypertexte utags.
  • si une ligne commence par au moins deux blancs elle sera prise comme un paragraphe, et une ligne de séparation sera introduite.
    Les fonctionnalités de formatex sont:

    Analyse du texte

    Un texte ASCII saisi par éditeur est composé par une suite de mot et de caractères spéciaux de césures:

  • le "blanc" ou "espace" caractère ascii 40 est le séparateur unique,
  • les caractères '

    ', '

    ', '-' et '\n' sont des délimiteurs de bloc.

  • il n'y a pas de délimiteur de chaine de caractères.

  • On lit un mot, puis ce mot est réécrit en sortie.
  • On effectue des traitements en fonction du délimiteur de bloc que l'on rencontre.
  • Les traitements différent suivant le formatage choisi.

    16/08/2002 idée pour rendre plus puissant le code de l'analyseur.

  • lorsqu'on traite la séquence des mots on s'aperçoit qu'il est intéressant de connaître le contexte par exemple le mot ou le séparateur précédent et evéntuellement le mot précédent le mot précédent etc...

    Il semble donc intéressant de stocker dans une pile fifo les mots et les séparateurs et de gérer le contexte en se positionnant dans la pile.

    Conversion pour word

    FORMAT WORD

    Comment transferer un texte écrit sous un éditeur classique vers un traitement de texte comme WORD.

    Paragraphe word

    Word a une manière particulière de concevoir un texte: Un texte est formé de paragraphe, ces paragraphes sont délimités par le caractère '\n'. Les retours à la ligne forcés sont indiqués par le caractére ' ' (ascii 11 Vertical Tabulation).

    Lorsque l'on saisi sous un éditeur on peut choisir une présentation du texte qui corresponde à ce que l'on trouve dans WORD:

  • un paragraphe sera délimité par une ligne vide (cad 2 '\n' à la suite) où par un délimiteur spécial par exemple "

    "

  • un retour à la ligne forcé peut se produire par un retrait sur la ligne qui suit ou un tiret. Si le tiret est isolé il s'agit d'un alinéa, si il est à la fin d'un mot, il indique qu'un mot a été coupé.

    Avec ces régles on peut définir des règles de transformation de l'éditeur vers le traitement de texte.

    Règles de conversion pour word

    Retour à la ligne simple

  • si on trouve un \n et que le précédent démiliteur n'est pas un \n, on supprime ce \n du texte résultant. Le retour à la ligne est fait automatiquement dans WORD (lignes pliées).

    Une ligne vide un paragraphe

  • si on trouve un \n et que le précédent démiliteur est un \n, on met ce \n dans le texte résultant

    Troncation de ligne

  • si on trouve un '\n' et que le délimiteur précédent est un '-' et qu'il n'y a pas de mot entre.
    c'est que l'on a un tiret troncateur de mot pour aller à la ligne, on réécrit le '-' puis on ajoute un \n.

    Retour à la ligne pour énumération

  • si on trouve un '-' isolé c'est qu'il s'agit d'un alinéa, on ajoute un caractère de saut de ligne et l'on réécrit le '-' dans le texte résultant.

    Paragraphe delimiteur de bloc

  • si un trouve un délimiteur de bloc classique '

    ' ou '

    ' en colonne zéro, on insére un \n.

    Retour à la ligne forcé - si aprés un retour à la ligne simple (\n) on trouve avant le prochain mot au moins deux séparateurs, on considère que c'est un retrait et que le retour à la ligne à été voulu. On ajoute donc un caractère de saut de ligne (VT) pour WORD. Si le retour à la ligne venait d'une ligne vide c'est qu'on est en début de paragraphe, on ne fait donc pas le traitement.

    Formattage ascii

    Message enrobement

    L'utilitaire formatex reformate un texte en constituant de nouvelles lignes.
    Chacune de ces lignes peut être insérer dans un message donné sous la forme d'une liste simple. Le message sera inséré dans cette liste simple à l'endroit où sera trouvé la chaine : "", le message sera inséré entre les deux double-quotes.
    S'il n'y a pas de double-quotes dans le message il ne sera pas utilisé.

    Nombre de colonnes maxi

    ce paramètre donne la longueur maximale des lignes formatées. Par défaut ce paramètre a pour valeur 79. Dans le car du FORMAT_WORD il n'en est pas tenu compte, car les lignes sont des paragraphes.

    Spécification de impexp 

    La base hypertexte à exporter est définie par un fichier .dom on constitue à partir du .dom une liste de fichier à exporter.
    on lance pkzip avec cette liste.

    Information export

    Sur le support d'export on a:

  • le fichier compressé dans un fichier zip
  • la liste des fichiers compressés constituée:
  • du chemin complet du fichier dans l'architecture de la base hypertexte,
  • de la date de dernière MAJ du fichier,
  • la base à partir de laquelle a été faite la dernière opération sur le fichier (export ou import).

    Documentation technique utags pm : module perl de recherche dans la base hypertexte utags

  • l'appel du module utags pm charge l'index utags en mémoire

    Documentation technique TableauCharger 

  • la fonction TableauCharger charge un tableau mentor à partir de son étiquette, d'une recherche dans l'index utags