Alvis-NLPPlatform
view release on metacpan or search on metacpan
lib/Alvis/NLPPlatform/MyReceiver.pm view on Meta::CPAN
package Alvis::NLPPlatform::MyReceiver;
#use Data::Dumper;
use strict;
use warnings;
use XML::Parser::PerlSAX;
# use utf8;
use Alvis::NLPPlatform::XMLEntities;
use Data::Dumper;
our $VERSION=$Alvis::NLPPlatform::VERSION;
###
### Package
###
my $data;
sub start_document {
# print Dumper($tab_object);
}
sub end_document {
# print Dumper($tab_object);
}
#
# init object
#
sub new {
my $type = shift;
my @stack_elements = ();
my $tab_objet = {};
my $is_in_ann;
# my $data;
return bless {"tab_object" => {} , "stack_elements" => \@stack_elements, "is_in_ann" => $is_in_ann, "counter_id" => 0 } , $type;
}
#
# process <..>
#
sub start_element {
my ($self,$properties) = @_;
if ($self->{"is_in_ann"}) {
if ($self->is_empty()) { # new element
my $elem = {};
push(@{$self->{"stack_elements"}},$elem);
$elem->{'kind'} = 'simple';
} else {
my $father = $self->top_stack();
my $elem;
if ($properties->{'Name'} =~ /^list/) { # detects that it is a list
$elem = {}; # hashtable par défaut
$elem->{'kind'} = 'list';
$elem->{'values'} = []; # tableau
} else {
$elem = {}; # hashtable par défaut
$elem->{'kind'} = 'simple';
}
if ($father->{'kind'} eq 'list') {
my $tab = $father->{'values'};
} else { # complex or simple
$father->{'kind'} = 'complex';
$father->{$properties->{'Name'}} = $elem;
}
$elem->{'datatype'} = $properties->{'Name'};
push(@{$self->{"stack_elements"}},$elem);
}
} else {
$self->{"is_in_ann"} = $properties->{'Name'} eq 'linguisticAnalysis';
}
$data='';
}
sub end_element {
my ($self,$properties) = @_;
my $field;
my $father;
if ($self->{"is_in_ann"}) {
$self->{"is_in_ann"} = $properties->{'Name'} ne 'linguisticAnalysis';
if ($self->{"is_in_ann"}) {
my $size=$#{$self->{"stack_elements"}};
my $elem = $self->top_stack();
if ($size >= 1) {
if ($properties->{'Name'} eq "named_entity") {
if (!exists($elem->{'id'})) {
my $ftab = $elem->{'values'};
push (@$ftab, "named_entity" . $self->{"counter_id"});
$elem->{'id'} = "named_entity" . $self->{"counter_id"};
$field = 'id';
$data = "semantic_unit" . $self->{"counter_id"};
$self->{"counter_id"}++;
( run in 1.472 second using v1.01-cache-2.11-cpan-39bf76dae61 )