#/usr/bin/perl
<<DOC; 
Votre Nom : 
JANVIER 2005
 usage : perl parcours-arborescence-fichiers repertoire-a-parcourir
 Le programme prend en entrée le nom du répertoire contenant les fichiers
 à traiter
 Le programme construit en sortie un fichier structuré contenant sur chaque
 ligne le nom du fichier et le résultat du filtrage :
<FICHIER><NOM>du fichier</NOM></FICHIER><CONTENU>du filtrage</CONTENU></FICHIER>
DOC
#-----------------------------------------------------------
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="SORTIE.xml";
if (!open (FILEOUT,">$output1")) { die "Pb a l'ouverture du fichier $output1"};
#----------------------------------------
&parcoursarborescencefichiers($rep);	#recurse!
#----------------------------------------
print FILEOUT "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>\n";
print FILEOUT "<PARCOURS>\n";
print FILEOUT "<NOM>Evguenia Krougovaia</NOM>\n";
print FILEOUT "<ETIQUETAGE>".$DUMPFULL1."</ETIQUETAGE>\n";
print FILEOUT "</PARCOURS>\n";
close(FILEOUT);
open (FILEEXTRACT, ">extracttermino.txt");
print FILEEXTRACT $Contenu;
system "perl trouve_terme_treetagger.pl extracttermino.txt patron-1.txt";
#Les fichiers temporaires crŽŽs sont effacŽs
system "rm /Users/matthieurenault/Donnees/Evguenia/Plurital/Projet/Partie3/Treetagger/sortie.txt";
system "rm /Users/matthieurenault/Donnees/Evguenia/Plurital/Projet/Partie3/Treetagger/temp.txt";
system "rm /Users/matthieurenault/Donnees/Evguenia/Plurital/Projet/Partie3/Treetagger/sortie.txt.xml";
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) {
#       TRAITEMENT à réaliser sur chaque fichier

#       traitement permettant de ne garder que le nom du fichier (et non son arborescence) pour l'affichage

	$filename = $file;
         $filename=~s/.*\/(.*)$/$1/;

#       InsŽrer ici votre code (le filtreur)

	open (FILEINPUT, $file);
	   while ($ligne = <FILEINPUT>) {
	    	if ($ligne =~/<description>(.*)<\/description>/) {

# test permettant de ne pas Žcrire la description du fil lui-mme dans le fichier de sortie (on nettoie au fur et ˆ mesure de l'avancement.
			$Descr = $1;	
			if ($Descr !~/Toute l'actua.*au moment de la connexion/) {
				#On remplace tous les espaces par des sauts de lignes
				$Descr =~s/\s/\n/g;
				#On ajoute avant tous les signes de ponctuation un sauts de ligne
				$Descr =~s/[\.!?;,]/\n\./g;
				#On stocke $Descr dans un fichier temporaire afin d'appliquer le treetagger
				open (FILETEMP, ">temp.txt");
				print FILETEMP $Descr;
				system "/Users/matthieurenault/Donnees/Evguenia/Plurital/Projet/Outils/TreeTagger/bin/tree-tagger -token -lemma  /Users/matthieurenault/Donnees/Evguenia/Plurital/Projet/Outils/TreeTagger/lib/french.par /Users/matthieurenault/Donnees/Evguenia/Plurital/Projet/Partie3/TreeTagger/temp.txt /Users/matthieurenault/Donnees/Evguenia/Plurital/Projet/Partie3/TreeTagger/sortie.txt";

				#Le fichier cree par Treetagger est transformŽ en XML
				system "perl treetagger3xml.pl sortie.txt";

				open (FILETEMP, "<sortie.txt");
				while ($line = <FILETEMP>) {
					$Contenu = $Contenu . "$line";
				}

				$Descr = "";



				#Le contenu de la transformation est stockŽ dans une variable
				open (FILEXML, "sortie.txt.xml");						while ($line = <FILEXML>) {
					#Si la ligne inconnu contient un ŽlŽment "unknown" on enlve les balises ouvrantes et fermantes afin de ne pas avoir un document xml mal formŽ
					$line=~s/<unknown>/unknown/g;
					$Descr = $Descr . "$line";
				}

				close (FILEXML);				

			 	$DUMPFULL1 =   $DUMPFULL1 . "\n<FICHIER>\n<NOM>$filename</NOM>\n<CONTENU>\n" .  $Descr . "</CONTENU>\n</FICHIER>";
				
			}
		}
	    print $i++,"\n";
	}

	   close (FILEINPUT);
	}
    }

}

#----------------------------------------------
