cordial.pm

package cordial;

use strict;

use warnings;

use diagnostics;

use utf8;

use Exporter;

our @EXPORT = qw(&cnr2xml);

our @ISA = qw(Exporter);

use utile;

use erreur;

use analyseur;

my %element=("lemme"=>"lemme","Dialogue"=>"string","Codegram"=>"type");

my $headerXML=qq(<?xml version="1.0" encoding="utf-8"?>\n);

Définitions des fonctions

cnr2xml


sub cnr2xml{

my ($input,$output)=@_;

open(FCOR,"<:utf8",$input) or erreur::affiche('ouvertureF',$input);

$output=utile::changeExtension($input,"xml") unless defined $output;

open (FCXML,">:utf8",$output) or erreur::affiche('ouvertureF',$output);

# adaptation au formatage de cordial

my $position=&getFormatage;

print FCXML $headerXML.qq(<parcours nom="$input">\n);

while(my $ligne=<FCOR>){

chop $ligne;

if($ligne=~/={4} DEBUT DE PHRASE ={4}/){ # si début ou fin de phrase

print FCXML "<passage>\n";

while($ligne=<FCOR>){

chop $ligne;

if ($ligne=~/={4} FIN DE PHRASE ={4}/){

print FCXML "</passage>\n";

last;

}

my @champs=split/\t/,$ligne;

print FCXML analyseur::formatageElementEnXML(

@champs[$position->{type}],

@champs[$position->{lemme}],

@champs[$position->{string}],

);

}

}

print FCXML "</parcours>";

}

#XML::write::footerXML(FCXML);

}


getFormatage


sub getFormatage{

my %position;

my $firstLine=<FCOR>;

chop $firstLine;

my @champs=split(/\t/,$firstLine);

for(my $i=0;$i<@champs;$i++){ # pour chaque champs de la ligne

foreach my $key (%element){

if($champs[$i] eq $key){ # s'il y en a qui correpondent à un des type recherchés

$position{$element{$key}}=$i; # on associe l'indice du champs au type

}

}

}

return \%position;

}

1;