package patrons;
use utf8;

sub TTpatrons {
    $annote=shift(@_);
    $pattrons=shift(@_);
	#on ouvre le fichier annoté par TreeTagger en latin1
    open(FIC,"<:encoding(latin1)","$annote")or die "impossible ouvrir $annote : $!";
    my $fic='candidats.txt';
#on écrit le fichier des candidats repérés en utf8
open(FIC1,">:encoding(utf8)","$fic");
    my $i=0;
    my $j=0;
    my $k=0;
    my @token=();

    while (<FIC>) {
	$_=~ s/\r\n/\n/g;	#Au cas où le fichier de TT est au format dos
        my $ligne=$_;
        my @liste=split(/\t/,$ligne);	
        push(@token, $liste[$i++]." ");
        push(@patron, "$liste[$i++]" ." ");
        push(@lemme, "$liste[$i++]" ." ");
        $i=0;
    }
    close (FIC);

    @sous_patron=();

        while (defined($element_patron=shift(@patron))) {
            if ($element_patron !~ PUN && $element_patron !~ SENT) {
            	push(@sous_patron, $element_patron);
	            $j++;
	            next;
            }
            my @sous_token=@token[$k+1..$j-1];
            &cherche_patronTT(@sous_patron);
            @sous_patron=();
            $k=$j;
            $j++;
        }
close (FIC1);

    sub cherche_patronTT {
        my @liste=@_;
        my $suite_de_patrons=join("",@liste);
        $z=0;
        $nb=0;
        open(FIC, "$pattrons");
        while(<FIC>) {
$_=~ s/\r\n/\n/g;	#au cas où le fichier de patrons est au format dos, on le normalise. 
	$ligne=$_;
	    chomp $ligne;
	    $nb=0;
    	while ($ligne=~m/ /g) {$nb++};
	    $nb++;
    	while ($suite_de_patrons=~m/$ligne/g) {
	        my $avant=substr ($suite_de_patrons, 0, pos($suite_de_patrons)-length($ligne));
	        while ($avant=~m/ /g) {$z++}; 

    	    		print FIC1 "@token[$k+$z+1..$k+$z+$nb]\n";
	        $z=0;
	    }
    }
    close (FIC);
}
return ($fic);  #renvoie le nom du fichier créé par la fonction
}
1;


sub Cordialpatrons {
$annote=shift(@_);
$pattrons=shift(@_);
open(FIC,"<:encoding(latin1)","$annote") or die "impossible ouvrir $annote : $!";
my $fic='candidats.txt';
open(FIC1,">:encoding(utf8)","$fic");	#transforme le flux iso15 en utf8
my $i=0;
my $j=0;
my $k=0;
my @token=();
while (<FIC>)
{
$_=~ s/\r\n/\n/g;		#permet de transformer le format dos du fichier Cordial en Unix
my $ligne=$_;
chomp $ligne;
my @liste=split(/\t/,$ligne);
push(@token, $liste[$i++]." ");
push(@lemme, "$liste[$i++]" ." ");
push(@patron, "$liste[$i++]" ." ");
$i=0;
}
close (FIC);
@sous_patron=();
while (defined($element_patron=shift(@patron)))
{
$element_patron=~s/\n//;
if ($element_patron !~ "PCTFORTE")
{
push(@sous_patron, $element_patron);
$j++;
next;
}

my @sous_token=@token[$k..$j-1];
&cherche_patronC(@sous_patron);
@sous_patron=();
$k=$j+1;

$j++;
}
close (FIC1);

	#=============================================
sub cherche_patronC
{
my @liste=@_;
my $suite_de_patrons=join("",@liste);
$z=0;
$nb=0;
open(FIC, $pattrons);
while(<FIC>)
{
$nb=0;
$_=~ s/\r\n/\n/g;	#au cas où le fichier de patrons est au format dos, on le normalise.
$ligne=$_;
chomp $ligne;
while ($ligne=~m/ /g) {$nb++};
$nb++;
while ($suite_de_patrons=~m/$ligne/g)
{
my $avant=substr ($suite_de_patrons, 0, pos($suite_de_patrons)-length($&));
while ($avant=~m/ /g) {$z++};
print FIC1 "@token[$k+$z..$k+$z+$nb-1]\n";
$z=0;
}
}
close (FIC);
}

return ($fic);

}
1;
