﻿# !/bin/perl

#fonction demandant les chemins d'accès I/O
sub the_beginning_of_the_end()
{
	print "voulez-vous utiliser les réglages par défaut (o\\n)?" ;
	chomp($ans_1=<STDIN>) ;
	if ($ans_1=~/[o|y]/i)
		{
		$inputdirectory="./urls"; 
		$nb_sens=8;
		$taboutput="./tabs/resultats.html";
		}
	else
		{
		print "Entrez le répertoire où se trouvent les fichiers contenant les urls : " ; 
		chomp($inputdirectory=<STDIN>) ;
		if($inputdirectory=~/\w*\/$/)
			{
			chop($inputdirectory) ; 
			} 
		print "Entrez le nombre de sens à traiter : " ;
		chomp($nb_sens=<STDIN>) ; 
		print " Entrez le nom du fichier HTML destination, qui sera placé dans le répertoire ./tabs :" ;
		chomp($nom_dest=<STDIN>) ;
		}
	local $kiwi=1 ;
	for($kiwi;$kiwi<=$nb_sens;$kiwi++)
		{
		$urls[$kiwi]="$inputdirectory/char_$kiwi.txt ";
		}
} 

#fonction créant l'en-tête du tableau résultat
sub tabmaker_general()
{
	open (TABLO,">$taboutput");
	print TABLO "<HTML><HEAD><TITLE>Le tableau de Karl&amp;Quentin</TITLE></HEAD>";
	print TABLO "<BODY><TABLE border=3 bgcolor=\"#BCD0ED\"><TR><TD><center> <strong>SENS</strong>  </center></TD>";
	print TABLO "<TD width=400><table border=1><TR><TH colspan = 4><center>Fran&ccedil;ais</center></TH></TR><TR><TD width=100><center> URL </center></TD><TD width=100><center> WGET </center></TD><TD width=100><center> DUMP </center></TD><TD width=100><center> Contexte  </center></TD></TR></TABLE></TD>";
	print TABLO "<TD width=400><table border=1><TR><TH colspan = 4><center>Anglais</center></TH></TR><TR><TD width=100><center> URL </center></TD><TD width=100><center> WGET </center></TD><TD width=100><center> DUMP </center></TD><TD width=100><center> Contexte  </center></TD></TR></TABLE></TD></TR>";
	close TABLO;
} 

#fonction créant la cellule contenant le sens
sub context_cell()
{
	open (TABLO,">>$taboutput");
	$ligne=~s/_/\&nbsp;/g;
	$ligne=~s/\&nbsp;a\&nbsp;/\&nbsp;\&agrave;\&nbsp;/ig;
	$ligne=~s/D&nbsp;/D\'/g;
	$ligne=lc($ligne);
	$ligne=ucfirst($ligne);
	print TABLO "<TR><TD><center> $ligne </center></TD><TD valign=\"top\"><TABLE><TR><TD width=100>"; 
	close TABLO;
} 

#fonctions taburl/wget/contexte : créent les tableaux de liens vers les pages aspirées, dumpées et vers les contextes, existent en version FR et EN.
sub taburl_fr()
{
	open (TABLO,">>$taboutput");
	print TABLO "<table border=1 width=100 bgcolor=\"#DFE6EF\">";
	local $kiwi=$num_ligne_FR;
	for($kiwi;$kiwi<$num_fr;$kiwi++)
		{
		print TABLO "<tr><td><center><a href=\"$tablo_fr[$kiwi]\">url $kiwi</a></center></td></tr>";
		}
	print TABLO "</table></td><td>";
	close TABLO;
} 

sub tabwget_fr()
{
	open (TABLO,">>$taboutput");
	print TABLO "<table border=1 width=100 bgcolor=\"#DFE6EF\">";
	local $kiwi=$num_ligne_FR;
	for($kiwi;$kiwi<$num_fr;$kiwi++)
		{
		print TABLO "<tr><td><center><a href=\"../pages_locales/url_fr_$kiwi.html\">locale $kiwi</a></center></td></tr>";
		}
	print TABLO "</table></td><td>";
	close TABLO;
} 

sub tabdump_fr()
{
	open (TABLO,">>$taboutput");
	print TABLO "<table width=100 border=1 bgcolor=\"#DFE6EF\">";
	local $kiwi=$num_ligne_FR;
	for($kiwi;$kiwi<$num_fr;$kiwi++)
		{
		print TABLO "<tr><td><center><a href=\"../dumps/url_fr_$kiwi.txt\">dump $kiwi</a></center></td></tr>";
		}
	print TABLO "</table></td><td>";
	close TABLO;
} 

sub tabctxt_fr()
{
	open (TABLO,">>$taboutput");
	print TABLO "<table width=100 border=1 bgcolor=\"#DFE6EF\">";
	local $kiwi=$num_ligne_FR;
	for($kiwi;$kiwi<$num_fr;$kiwi++)
		{
		print TABLO "<tr><td><center><a href=\"../contexts/url_fr_$kiwi.txt\">contexte $kiwi</a></center></td></tr>";
		}
	print TABLO "</table></td></table></td><TD valign=\"top\"><TABLE><TR><TD width=100>";
	close TABLO;
} 
 
sub taburl_en()
{
	open (TABLO,">>$taboutput");
	print TABLO "<table border=1 width=100 bgcolor=\"#DFE6EF\">";
	local $kiwi=$num_ligne_EN;
	for($kiwi;$kiwi<$num_en;$kiwi++)
		{
		print TABLO "<tr><td><center><a href=\"$tablo_en[$kiwi]\">url $kiwi</a></center></td></tr>";
		}
	print TABLO "</table></td><td>";
	close TABLO;
} 

sub tabwget_en()
{
	open (TABLO,">>$taboutput");
	print TABLO "<table border=1 width=100 bgcolor=\"#DFE6EF\">";
	local $kiwi=$num_ligne_EN;
	for($kiwi;$kiwi<$num_en;$kiwi++)
		{
		print TABLO "<tr><td><center><a href=\"../pages_locales/url_en_$kiwi.html\">locale $kiwi</a></center></td></tr>";
		}
	print TABLO "</table></td><td>";
	close TABLO;
} 

sub tabdump_en()
{
	open (TABLO,">>$taboutput");
	print TABLO "<table width=100 border=1 bgcolor=\"#DFE6EF\">";
	local $kiwi=$num_ligne_EN;
	for($kiwi;$kiwi<$num_en;$kiwi++)
		{
		print TABLO "<tr><td><center><a href=\"../dumps/url_en_$kiwi.txt\">dump $kiwi</a></center></td></tr>";
		}
	print TABLO "</table></td><td>";
	close TABLO;
} 

sub tabctxt_en()
{
	open (TABLO,">>$taboutput");
	print TABLO "<table width=100 border=1 bgcolor=\"#DFE6EF\">";
	local $kiwi=$num_ligne_EN;
	for($kiwi;$kiwi<$num_en;$kiwi++)
		{
		print TABLO "<tr><td><center><a href=\"../contexts/url_en_$kiwi.txt\">contexte $kiwi</a></center></td></tr>";
		}
	print TABLO "</table></td></table></td></tr>";
	close TABLO;
} 

#fonction "main", appelle ce qui doit être appelé quand ça doit être appelé.
&the_beginning_of_the_end ;
&tabmaker_general ; 
$num_en=1;
$num_fr=1; 
# for i_sens...etc : boucle traitant les sens un par un (1 fichier par sens)
for($i_sens=1;$i_sens<=$nb_sens;$i_sens++)
{
	#@ARGV - while <> : boucle traitant les fichiers ligne par ligne.
	@ARGV="$urls[$i_sens]";
	print "on utilise le fichier : $urls[$i_sens]";
	while($ligne=<>)
		{ 
		#structure if...elsif..elsif..else : équivalente au CASE en bash, traite les lignes de textes en fonction de leur nature : marqueur de langue, url, ou sens
		if($ligne=~/^[FR]/i)
			{
			$etat_FR=1;
			$etat_EN=0;
			$num_ligne_FR=$num_fr
			}
		elsif($ligne=~/^[EN]/i)
			{
			$etat_FR=0; 
			$etat_EN=1;
			$num_ligne_EN=$num_en
			} 
		elsif($ligne=~/^http:\/\/*/) 
			{ 
			if($etat_FR==1)
				{
				$tablo_fr[$num_fr]=$ligne ; 
				$num_fr++; 
				} 
			elsif($etat_EN==1)
				{
				$tablo_en[$num_en]=$ligne ; 
				$num_en++; 
				} 
			} 
		else
			{
			&context_cell; 
			}
		}
	$last_line_fr=$num_fr ;
	$last_line_en=$num_en ;
	
	#boucles créant les fichiers par wget, dump et egrep (la première pour les pages FR, la seconde pour les pages EN)
	for($coconut=$num_ligne_FR;$coconut<$last_line_fr;$coconut++)
		{
		$source=$tablo_fr[$coconut];
		$destination="./pages_locales/url_fr_$coconut.html";
		$dumpdest="./dumps/url_fr_$coconut.txt";
		$contdest="./contexts/url_fr_$coconut.txt";
		system("touch $dumpdest");
		system("touch $contdest");
		system("wget -O $destination $source");
		system("lynx -dump $destination > $dumpdest");  
		system("egrep -i \" char[$| ]| char-.| chars[$| ]| chars-.\" $dumpdest > $contdest");
		} 
	for($coconut2=$num_ligne_EN;$coconut2<$last_line_en;$coconut2++)
		{
		$source=$tablo_en[$coconut2];
		$destination="./pages_locales/url_en_$coconut2.html";
		$dumpdest="./dumps/url_en_$coconut2.txt";
		$contdest="./contexts/url_en_$coconut2.txt";
		system("touch $dumpdest");
		system("touch $contdest");
		system("wget -O $destination $source");
		system("lynx -dump $destination > $dumpdest");  
		system("egrep -i \" char | tank | sand-yacht | sand yacht | sandyacht | chariot | sulky | wagon | trolley | ox-cart | ox cart | float | bluff \" $dumpdest > $contdest"); 
		}

	#appel des procédures d'écriture du tableau de résultat dans le fichier HTML.
	&taburl_fr; 
	&tabwget_fr;
	&tabdump_fr;
	&tabctxt_fr;
	&taburl_en; 
	&tabwget_en;
	&tabdump_en;
	&tabctxt_en; 
	
	#fermeture du filehandler (pour la forme, le programme ne se poursuivant pas plus loin, les ressources systèmes sont libérées de toutes façons).
close TABLO;
}