#/usr/bin/perl -w
#-----------------------------------------------------------
my $rep="$ARGV[0]";
# on s'assure que le nom du répertoire ne se termine pas par un "/"
$rep=~ s/[\/]$//;
# on initialise la variable fichier pour pouvoir ecrire le contenu du premier repertoire au debut du sub
my $fichier=$path;
#----------------------------------------
my $output1="SORTIEetiquetageTT.xml";
if (!open (FILEOUT,">>$output1")) { die "Pb a l'ouverture du fichier $output1"};

print FILEOUT "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>\n";
print FILEOUT "<PARCOURS>\n";
print FILEOUT "<NOM>Ristic Aleksandra</NOM>\n";
print FILEOUT "<ETIQUETAGE>\n";

#----------------------------------------
&parcoursarborescencefichiers($rep);	#recurse!
#----------------------------------------

print FILEOUT "</ETIQUETAGE>\n";
print FILEOUT "</PARCOURS>\n";
close(FILEOUT);
system ("rm","treetag.txt");
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) {			
			if (!open (FILEOUT,">>$output1")) { die "Pb a l'ouverture du fichier $output1"};
			print FILEOUT "<fichier>"."\n"."<name>".$file."</name>"."\n";
	       		open(FILEINPUT,"$file");
	      		while ($ligne = <FILEINPUT>){	
	            		if ($ligne=~/<description>(.*)<\/description>/)  {
		                        my $desc=$1;
	        	                $desc=~ s/&#38;#39;/'/g;
	        	                $desc=~ s/&#38;#34;/"/g;
	        	                $desc=~ s/&#234;/ê/g;
	        	                $desc=~ s/Ã©/é/g;
	        	                $desc=~ s/Ã§/ç/g;
	        	                $desc=~ s/Ã¨/è/g;
	        	                $desc=~ s/Ã/à/g;
	        	                $desc=~ s/à´/ô/g;
	        	                $desc=~ s/&#233;/é/g;
		                        $desc=~ s/([^A-Za-zéèàëêâùïçôîÉÈÀÊÔÂÎÏËÙÇ'])/\n$1\n/g;
					$desc=~ s/\'/\'\n/g;

 	                           	my $output2="temp.txt";
                        		if (!open (FILEOUT2,">>$output2")) { die "Pb a l'ouverture du fichier $output1"};
        	        	    	print FILEOUT2 "<article>"."\n".$desc."\n"."</article>";
					            close (FILEOUT2);
				}
			}
                        system ("./TT/bin/tree-tagger", "-token", "-lemma",
                            "-no-unknown","-sgml",
                            "./TT/lib/french.par","temp.txt", "treetag.txt");




        		&ouvre;
        		&traitement;
        		&ferme;
##############################################################################################
			# Récupération des arguments et ouverture des tampons
        		sub ouvre {
		                $FichierEntree="treetag.txt";
                		open(Entree,$FichierEntree);
            		}



			# Traitement
            		sub traitement {
				if (!open (FILEOUT,">>$output1")) { die "Pb a l'ouverture du fichier $output1"};
				while ($Ligne = <Entree>) {
                    			if ($Ligne!~/\ô\¯\:\\ô\¯\:\\/) {
						# 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 FILEOUT "$Ligne";
	               			}
                		}
			
        		}


			# Fermeture des tampons
           		sub ferme {
                		close(Entree);
                        close(FILEINPUT);
                    }
    
        		
	        	print $i++,"\n";
        		if (!open (FILEOUT,">>$output1")) { die "Pb a l'ouverture du fichier $output1"};
        		print FILEOUT "</fichier>"."\n";
        		system ("rm","temp.txt");	
        	}	
    	}		
	return();	
}	
#----------------------------------------------
