# fichier AllManFileToTextFile.tcl
# 
# maj par diam le 27/03/97 11h30 
# 
# procédure permettant de transformer un fichier texte issue de la
# commande UNIX : 
#    man cvs >rm.man
# en un fichier texte lisible

package provide stead 2.0

proc AllManFileToTextFile {} {
   ########################################################################
   # Récupération du texte à modifier et sauvegarde du contexte.
   ########################################################################
   
   # on récupère le texte complet dans la variable text:
   set text [.main.t get 1.0 end]
   
   # On mémorise la position courante dans le texte :
   # # .main.t mark set old_insert [.main.t index insert]
   # # old_insert est détruit par .main.t delete ... => inexploitable
   set oldIdx  [.main.t index insert]
   
   # On sauvegarde l'état de l'éditeur (en RAM) pour le undo éventuel
   xtext_pushState
   xtext_markDirty .main.t
   
   ########################################################################
   # Début de modif de la variable text
   ########################################################################
   
   ########################################################################
   # On supprime les caractères de soulignement "_m" par "m"
   # regsub -all -- _\x08 $text "" text
   # On supprime les caractères de soulignement "_m" ou "_m" par "m"
   regsub -all -- _\x08|\x08_ $text "" text
   
   ########################################################################
   # on supprime les caracteres surimprimés sur un caractère précédent
   # (pour faire du gras)
   # par exemple "a\x08a\x08a\x08ab\x08b\x08b\x08b" par "ab" :
   # On traite d'abord les caractère "normaux" pout TCL et pour la 
   # commande regexp :
   set normCharList {
       q w e r t y u i o p a s d f g h j k l z x c v b n m 
       Q W E R T Y U I O P A S D F G H J K L Z X C V B N M 
       1 2 3 4 5 6 7 8 9 0 
       !  , ; : - / < > = ` ' ~ % # @
   }
   foreach c $normCharList {
       regsub -all -- \x08$c $text "" text
   } ;# endforeach
   
   ########################################################################
   # idem pour les caractères spéciaux pour regexp  :
   # (nécessite la protection "\" pour éviter leur interprétation)
   # La commande "list" retourne une liste propre formée de la liste de 
   # ses arguments 
   set specCharList [list . * + ? ( ) | & ^ \\ \" \$ \[ \] \{ \}]
   foreach c $specCharList {
       regsub -all -- \x08\\$c $text "" text
   } ;# endforeach
   
   
   ########################################################################
   # On supprime le texte de séparation des pages de la forme :
   # 
   # 
   #  Hewlett-Packard Company    - 4 -   HP-UX Release 9.0: August 1992
   # 
   # 
   # 
   # 
   # 
   # 
   #  rm(1)                                                   rm(1)
   # 
   # 
   # 
   # 
   
   # chaine dans stead "Search for avec "Regext-find", mais pas "By line": 
   # "\n\n\n\n[^\n]+\n\n\n\n\n\n\n[^\n]+\n\n\n\n"
   # "\n\n\n\n*[^\n]+\n\n\n\n\n\n\n\n*[^\n]+\n([^\n]+\n)?\n\n\n"
   set CR2 "\n\n"
   set CR3 "\n\n\n"
   set CR4 "\n\n\n\n"
   set CR5 "\n\n\n\n\n"
   set CR6 "\n\n\n\n\n\n"
   set NonEmptyLine "\[^\n\]+\n"
   
   # modif diam 01/09/99
   # 
   # set    Pattern "${CR3}\n*${NonEmptyLine}${CR6}\n*"
   # append Pattern "${NonEmptyLine}(${NonEmptyLine})?${CR3}\n*"
   # 
   # pour linux :
   set    Pattern "\n${CR3}*${NonEmptyLine}\n${CR6}*"
   append Pattern "${NonEmptyLine}${CR2}\n*"
   
   
   regsub -all -- $Pattern $text "\n--\n" text


   
   ########################################################################
   # fin des modification de la variable "text"
   ########################################################################
   
   # On supprime l'ancien texte et on le remplace par le nouveau :
   .main.t delete 1.0 end
   .main.t insert insert $text
   
   # on essaie de restituer la position initiale
   # # .main.t mark set insert old_insert
   # # .main.t mark unset old_insert
   .main.t mark set insert $oldIdx
   # # # .main.t yview -pickplace insert
   .main.t see insert
   
   ########################################################################

} ;# end AllManFileToTextFile

# # # Exécution de la procédure de remplacement globale
# # AllManFileToTextFile

