#!/usr/bin/perl
#  FaitIndexDeFenetres.pl

<<DOC; 
B. Habert
lun mar 20 15:38:23 CET 2006

               FaitIndexDeFenetres.pl :


Format d'entrée : 

ébauche_Nc
philosophie_Nc
le_D
méta-éthique_Nc
,_Y
ou_C
éthique_Nc
analytique_A
,_Y
désigner_V
le_D
analyse_Nc
de_D
concept_Nc
éthique_A
de_S
base_Nc
,_Y
de_S
...
sv_Nc
:_Y
Metaetik_Np
<FinFenetre/>
ébauche_Nc
philosophie_Nc
le_D
responsabilité_Nc
être_V
le_D
devoir_Nc
de_S
répondre_V
de_S
un_D
...
:_Y
Ikisellik_Np
<FinFenetre/>

Exemple : perl FaitIndexDeFenetres.pl PHILOLynx-dump-normaliseCordialLemmeCatBreve.ArticleEgalFenetre > PHILOLynx-dump-normaliseCordialLemmeCatBreveArticleEgalFenetre.Index

Format de sortie :

<?xml version="1.0" encoding="iso-8859-1"?>
<index>
<t c="sceptique_A" f="21"/>
<t c="failler_V" f="1"/>
<t c="station_Nc" f="2"/>
<t c="quantificateur_Nc" f="1"/>
<t c="3x3_A" f="1"/>
<t c="rabbin_Nc" f="3"/>
<t c="Dostoïevsky_Np" f="5"/>
<t c="Saint thomas_Np" f="2"/>


A faire :

Bugs et problèmes :

DOC



$ChaineUsage = "Usage : FaitIndexDeFenetres.pl <fichier avec un séparateur de fenêtre et un item par ligne>\n" ; 
if (@ARGV != 1) {die $ChaineUsage ; }  
$FichierEntree   = $ARGV[0] ;  
%Token2Frequence = () ;
$PourWindows = 1 ;
if ($PourWindows == 0) {
  $FinLigne     = "\n" ; 
}
else {
  $FinLigne     = "\r\n" ; 
}
$FinFenetre      = "<FinFenetre/>$FinLigne" ;

open(ENTREE, $FichierEntree) ;  
while ($Ligne = <ENTREE>){
  if ($Ligne eq $FinFenetre) {
  }
  else {
    # On enlève le \n
    chomp($Ligne) ;
    if ($PourWindows == 1) {
      chop($Ligne) ; 
    }
    $Token2Frequence{$Ligne}++ ;
  }
}
close(ENTREE) ;

imprimeEnTete() ;
foreach $Token (keys %Token2Frequence) {
  print "<t c=\"$Token\" f=\"$Token2Frequence{$Token}\"/>$FinLigne" ;
}
imprimeEnPied() ;

sub imprimeEnTete{
  print "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>$FinLigne<index>
" ; 
}

sub imprimeEnPied{
  print "</index>$FinLigne" ;
}
