#!/usr/bin/perl
use File::Basename;

<<DOC;
input : prend en argument le nom du répertoire contenant des textes étiquetés avec Cordial
output : les mêmes textes au format xml
DOC


$ChaineUsage="usage : cordial2xml.pl <dossier>\n";
if (@ARGV!=1) {
	die $ChaineUsage;
}

mkdir "./xml/";

$rep = "$ARGV[0]";
$rep =~ s/[\/]$//;

&ouvre($rep);

exit;


##################################################################################
sub ouvre {
my $path = shift(@_);
opendir(DIR, $path) or die "cordial2xml.pl n'a pas pu ouvrir le dossier $path\n";
my @files=readdir(DIR);
closedir(DIR);

foreach my $file (@files) {
	next if ($file !~ m/\.cnr$/);
	$file = $path."/".$file;
	
	if (-d $file) {
		&ouvre($file);
	}

	if (-f $file) {
		open(Entree,$file);
		$FichierSortie=basename($file, ".cnr").".xml";
		open(Sortie,">:encoding(UTF-8)","./xml/$FichierSortie");
		
		&entete;
		&traitement;
		&fin;
		&ferme;
	}
}
}

# entête de document XML
sub entete {
    print Sortie "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n";
	print Sortie "<?xml-stylesheet type=\"text/xsl\" href=\"../style_cordial.xsl\"?>\n";
    print Sortie "<document>\n";
    print Sortie "<article>";
}

# traitement
sub traitement {
    while ($Ligne = <Entree>) {
		chomp($Ligne);
	    if($Ligne =~ s/^([^\t]*)\t([^\t]*)\t([^\t]*).*$/\n<element>\n <data type=\"type\">$3<\/data>\n <data type=\"lemma\">$2<\/data>\n <data type=\"string\">$1<\/data>\n<\/element>/){
			print Sortie $Ligne;
		}
    }
}

# fin de fichier
sub fin {
    print Sortie "\n</article>\n";
    print Sortie "</document>\n";
}

# fermeture des tampons
sub ferme {
    close(Entree);
    close(Sortie);
}
