#!/usr/bin/perl -w

use jspell;
use Lingua::PT::PLN;
use Data::Dumper;
use locale;
use strict;

my $pt_dict = jspell::new("port");
my $en_dict = jspell::new("eng");
print Dumper($pt_dict);


my %pnlist=();
my %pnlistD=();

my $file = shift;
my %tab=();

sub initTab{
 my @pcolectiva =qw{ Direco Administrao  Comisso
 };
 my @metaInst = qw{ Instituto Fundao Instituto
   Universidade Faculdade Escola Departamento Conservatrio Academia
   Sindicato Associao Federao
   Teatro Grupo 
   Ministrio Conselho Cmara Fundo Secretaria Assembleia Centro 
 };
 my @pessoa = qw{ Ministro Engenheiro Doutor Presidente Professor Dr.
     Director Secretrio 
     Padre Frei Papa Cnego Arcebispo Bispo Cardeal 
     General Almirante Comandante Capito Brigadeiro Tenente Alferes 
     Marqus Conde Dom D. Visconde Conselheiro 
 };
 my @metaLug = qw{ Lugar Largo Praa Praceta Bairro Rua R. Avenida Av. 
   Travessa Beco Urbanizao Quinta Viela Estrada Calada Rotunda Jardim 
 };
 my @monumento = qw{Convento Mosteiro Igreja Palcio Torre Museu S Fonte
 };

 @tab{@metaInst} = ("instituio") x @metaInst;
 @tab{@pcolectiva} = ("pessoa colectiva") x @pcolectiva;
 @tab{@pessoa} = ("pessoa") x @pessoa;
 @tab{@metaLug} = ("Lugar") x @metaLug;
 @tab{@monumento} = ("monumento") x @monumento;
}

my $procPn= sub{my $a=shift;
    print STDERR "debud pn1($a)\n";
    if($a =~ /(\w+)/){
         my $f=$1;
         my @a=$pt_dict->fea($f);
         my %b = onethat({CAT => "np"}, @a);
         if(%b){if (defined $b{SEM}){"<pn t='$b{SEM}'>$a</pn>"}
                else {print STDERR "?? $a -- no SEM\n";
                      "<pn t='np??'>$a</pn>"}}
         elsif(defined $tab{$f}){"<pn t='$tab{$f}'>$a</pn>"}
         else {
            @a = $en_dict->fea($f);
            %b = onethat({CAT => "np"}, @a);
            if(%b){if (defined $b{SEM}){"<pn L='en' t='$b{SEM}'>$a</pn>"}
                   else {print STDERR "?? $a -- english but no SEM\n";
                         "<pn t='np??'>$a</pn>"}}
            else { print STDERR "$a\n";
               "<pn t='?'>$a</p>"}}}
    else {"<pn t='??'>$a</p>"}
  };

my $procPn2= sub{my $a=shift;
    print STDERR "debud pn2($a)\n";
    if($a =~ /(\w+)/){
         my @a=$pt_dict->fea($1);
         my %b = onethat({CAT => "np"}, @a);
         if(%b || scalar @a == 0){&{$procPn}($a)}
         else{ undef ;}}
    else {"<pn t='???'>$a</p>"}
  };

initTab();
forPN({in=>$file, sep=> '>', out=> "___", t=>"double"}, $procPn,$procPn2);

__END__
