#/usr/bin/perl
# 1 - Récupération des paramètres
open (SOURCE, "$ARGV[0]");
my $mot =  <SOURCE>;
print "Bonjour cher utilisateur. \n 
Peux-tu entrer le nom du fichier de travail ?\n";
my  $fichierdetravail = <STDIN>; 
#on met dans la variable $fichierdetravail ce que l'utilisateur tape au clavier
print "Combien voulez vous de mots avant?\n";
my  $nombredemotsav = <STDIN>; 
#on met dans la variable $nombredemots ce que l'utilisateur tape au clavier
print "Combien voulez vous de mots après?\n";
my  $nombredemotsap = <STDIN>; 
#on met dans la variable $nombredemots ce que l'utilisateur tape au clavier
chomp ($fichierdetravail); 
#chomp enlève le dernier caractères si c'est un saut de ligne
# au contraire, chop enlève le dernier caractère quel qu'il soit
# 2 - Préparation de la sortie HTML
use locale; # pour dire qu'on est en France et donc qu'on utilise des accents
open (sortie, ">concordance.html");
print sortie "<html><head></head><body bgcolor=\"purple\">\n";
print sortie "<p align=\"center\"><b> Concordance de \"$mot\" 
dans le fichier \"$fichierdetravail\" <br> 
construite avec le programme \"$0\"</b></p>\n"; 
# $0 fait référence  au programme qui est en train de s'exécuter
print sortie "<table bgcolor=\"powderblue\" align=\"center\" border=\"2\">\n";
print sortie "<tr><td><b>Compteur</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></tr>";
# 3 - Programme pour la concordance
$a=1;
open (FILE, "$fichierdetravail");
while (my $ligne=<FILE>) {
			$ligne=~s/&acirc;/â/g;# nettoie
			$ligne=~s/&iuml;/ï/g;# nettoie
			$ligne=~s/&ucirc;/û/g;# nettoie
			$ligne=~s/&ecirc;/ê/g;# nettoie
			$ligne=~s/&eacute;/é/g;# nettoie
            $ligne=~s/&egrave;/è/g;# nettoie
            $ligne=~s/&icirc;/\î/g;# nettoie
            $ligne=~s/&ocirc;/\ô/g;# nettoie
            $ligne=~s/&ccedil;/\ç/g;# nettoie
            $ligne=~s/&agrave;/\à/g;# nettoie
	while ($ligne=~/\b$mot\b/gi) { 
#'g' est une option de la recherche qui permet d'aller chercher 
#toutes les occurrences et \b permet de dire : 'début de mot' 
#et 'fin de mot' et 'i' est une option qui permet 
#de dire que c'est indépendant de la casse
		my $contextegauche=$`;
		my @gauche=split(/[\W+]/, $contextegauche);
		my $pole=$&;
		my $contextedroit=$';
		my @droit=split(/[\W+]/, $contextedroit);
		my $g="";
		my $d="";
		for ($i=$#gauche-$nombredemotsav+1; $i<=$#gauche; $i++) {
			next if ($i<0);
			$g.="$gauche[$i]\t";
					}
		$i=0;
		for ($i=0; $i<=$nombredemotsap+1; $i++){
			$d.="$droit[$i]\t";
		}		
		print sortie "<tr><td align=\"center\"><marquee direction=\"right\" 
		scrollamount=\"2\" height=\"20\" width=\"40\">$a<marquee></td>
		<td align=\"right\"><i>$g&nbsp;<i></td><td align=\"center\">
		<blink>$pole</blink></td><td align=\"left\"><i>$d&nbsp;<i></td></tr>";
		$a++;
	}# fin de while
}# fin de while
# 4 - Fin d'un programme propre
print sortie "</table>\n</body>\n</html>\n"; 
# on ferme le tableau, le body et le document html
close sortie;
close FILE;
# FIN !!
