use locale;
#!/usr/bin/perl

#On va récupérer le fichier à analyser
print "Quel est le nom du fichier sur lequel nous allons travailler?	";
#On affecte à la variable $file l'entrée de la saisie
my $file=<STDIN>;
#On enlève le retour chariot
chomp ($file);

#On ouvre le fichier à analyser en lecture
open (FILEIN,$file);
#Ainsi que le fichier de sortie
open(FILEOUT, ">result1.html");

#On recupére le mot à traiter
print "Quel sont les mots a analyser? (Separez-les par un espace)	";
#On affecte à la variable $search l'entrée de la saisie
my $searcht=<STDIN>;
#On enlève le retour chariot
chomp ($searcht);

#On crée un tableau afin de pouvoir créer une boucle foreach et analyser tous les mots souhaités en une seule fois
my @TEST=split(/ /,$searcht);



#Le contexte à afficher autour du mot...
print "Quel est nombre de mots a afficher autour du mot analyse?	";
#On récupère le chiffre donné à la saisie...
my $nbre=<STDIN>;
#On enlève le retour chariot
chomp ($nbre);



#On commence à écrire le fichier en sortie
print FILEOUT "<html><body bgcolor=\"black\">\n";
print FILEOUT "<title>$0</title>\n";
print FILEOUT "<p align=\"center\"><font color=\"white\">Concordance de \"$search\" dans le fichier $file<br/>construite avec le programme $0</font></p> \n";

#On écrit le début du tableau
print FILEOUT "<table align=\"center\" bgcolor=\"white\" border=\"1\"><tr><td><b>N°</b></td><td align=\"right\"><b>Contexte gauche</b></td><td align=\"center\"><b>Pole</b></td><td align=\"left\"><b>Contexte droit</b></td>\n";

#----------------------------------------------------------------------------------------------------------------------------------
#Maintenant on va chercher les contextes
#On crée un compteur initialisé à 0
$cptfq=0; 



#Tant qu'on peut associer une ligne du fichier référencé sous le nom FILEIN à la variable $line, on exécute le bloc d'instructions
while (my $ligne=<FILEIN>) {
	foreach $searcht (@TEST) {
    while($ligne=~/\b$searcht\b/gi) { 
	my $gauche=$`;
	my $pole=$&;
	my $droite=$';
	$droite=~s/^ //;
	

	#Je découpe la chaîne de caractères sur la base de l'expression régulière
	#"tout ce qui n'est pas caractère alphanumérique".
	my @GAUCHE=split(/\W+/,$gauche);

	#Je découpe la chaîne de caractères sur la base de l'expression régulière
	#"tout ce qui n'est pas caractère alphanumérique".
	my @DROITE=split(/\W+/,$droite);

	#On recrée le contexte droit
	#Liste temporaire vide
	my $tmpdroit="";
	#on part de la position 1 pour enlever le blanc qui se trouve avant
	for ($i=1;$i<=$nbre;$i++) {
	    $tmpdroit.=$DROITE[$i]." ";
	}
	
	#On recrée le contexte gauche
	#Il faut renverser le tableau
	
	#Liste temporaire vide
	my $tmpgauche="";
	
	@GAUCHE=reverse(@GAUCHE);
	
	#boucle
	for ($i=0;$i<=$nbre-1;$i++) {
	    $tmpgauche=$GAUCHE[$i]." ".$tmpgauche;
	    
	}
	$cptfq++;
	print FILEOUT "<tr><td><b>$cptfq</b></td><td align=\"right\">$tmpgauche</td><td align=\"center\"><font color=\"blue\"><b>&nbsp;$pole&nbsp;</b></font></td><td align=\"left\">$tmpdroit</td>\n";
    }
    
}
}



#On écrit la fin du fichier
print FILEOUT "</table>\n</body>\n</html>\n";

#On ferme les fichiers ouverts
close(FILEOUT);
close(FILEIN);
