#/usr/bin/perl
my $rep="$ARGV[0]";
# on s'assure que le nom du répertoire ne se termine pas par un "/"
$rep=~ s/[\/]$//;
# on initialise une variable contenant le flux de sortie
my $DUMPFULL1="";
#----------------------------------------
my $output1="etiquetage.xml";
if (!open (FILEOUT,">$output1")) { die "Pb a l'ouverture du fichier $output1"};

my $output2="etiquetage.txt";

if (!open (OUTPUT2,">$output2")) { die "Pb a l'ouverture du fichier $output2"};

my $output3="mot.txt";

# Si le fichier mot.txt ne peut s'ouvrir ce message apparait.
if (!open (OUTPUT3,">$output3")) { die "Pb a l'ouverture du fichier $output3"};

#----------------------------------------
&parcoursarborescencefichiers($rep); #recurse!
#----------------------------------------
print FILEOUT "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>\n";
print FILEOUT "<PARCOURS>\n";
print FILEOUT "<NOM>Kozhina Natalia</NOM>\n";
print FILEOUT "<FILTRAGE>".$DUMPFULL1."</FILTRAGE>\n";
print FILEOUT "</PARCOURS>\n";

print OUTPUT2 $cont;

close(FILEOUT);
close(FILEOUT2);
exit;
#----------------------------------------------
sub parcoursarborescencefichiers {
my $path = shift(@_);
opendir(DIR, $path) or die "can't open $path: $!\n";
my @files = readdir(DIR);
closedir(DIR);
foreach my $file (@files) {
next if $file =~ /^\.\.?$/;
$file = $path."/".$file;
if (-d $file) {
&parcoursarborescencefichiers($file); #recurse!
}
if (-f $file) {

&ouvre;
&entete;

open (INFILE,"$file");

open (FICHIER, ">>ttagger.txt");

print FICHIER "<fichier>\n<name>".$file."</name>\n";

close (FICHIER);

while ($ligne = <INFILE>){
if ($ligne=~/<description>([^<]+)<\/description>/) {

$arv= "<FICHIER><NOM>".$file."</NOM><CONTENU>".$1."</CONTENU></FICHIER>";

$temp =$1."\n";
$temp=~ s/([^A-Za-zéèàëêâùïçôîÉÈÀÊÔÂÎÏËÙÇ'])/\n$1\n/g;
$temp=~s/(&#38;#39;)/\n'\n/g;
$temp=~s/(&#38;#34;)/\n"\n/g;
$temp=~s/([,])/\n$1/g;
$temp=~s/(é|&#233;)/é/g;
$temp=~s/&#234;/ê/g;
$temp=~s/è/è/g;
$temp=~s/ô/ô/g;
$temp=~s/Ã[^.*]/à/g;
$temp=~s/[ ]/\n/g;

print OUTPUT3 $temp;

close (OUTPUT3);

my $texte="mot.txt";
$ENV{'PATH'} = " ./bin;";
system("set $ENV{'PATH'}");
system(" ./bin/tree-tagger.exe -token -lemma -no-unknown ./lib/french.par $texte >>ttagger.txt");

&traitement;

open (OUTPUT3,">mot.txt");


$DUMPFULL1 = $DUMPFULL1 . $arv ;

$cont=$cont.$temp;

}
}

open (FICHIER, ">>ttagger.txt");
print FICHIER "</fichier>\n";
close (FICHIER);

close (INFILE);
print $i++,"\n";
}

&fin;
&ferme;
}
}

sub ouvre {
my $FichierEntree="ttagger.txt";
open(Entree,$FichierEntree);
$FichierSortie=$FichierEntree . ".xml";
open(Sortie,">$FichierSortie");
}

# Entête de document XML
sub entete {
print Sortie "<?xml version=\"1.0\" encoding=\"iso-8859-1\" standalone=\"no\"?>\n";
print Sortie "<PARCOURS>\n";
print Sortie "<NOM>Kozhina Natalia</NOM>\n";
print Sortie "<ETIQUETAGE>\n";
}

# Traitement
sub traitement {
while ($Ligne = <Entree>)
{
if ($Ligne!~/\ô\¯\:\\ô\¯\:\^C\^Q/) {
# Remplacement des guillemets par <![CDATA["]]> (évite erreur d'interprétation XML)
$Ligne=~s/\"/<![CDATA[\"]]>/g;
$Ligne=~s/([^\t]*)\t([^\t]*)\t(.*)/<element>\n <data type=\"type\">$2<\/data>\n <data type=\"lemma\">$3<\/data>\n <data type=\"string\">$1<\/data>\n<\/element>/;
print Sortie $Ligne;
}
}
}


# Fin de fichier
sub fin {
print Sortie "</fichier>\n";
print Sortie "</ETIQUETAGE>\n";
print Sortie "</PARCOURS>\n";
}


# Fermeture des tampons
# sub ouvre.
sub ferme {
close(Entree);
close(Sortie);
}