Brat-Handler
view release on metacpan or search on metacpan
lib/Brat/Handler/File.pm view on Meta::CPAN
package Brat::Handler::File;
use utf8;
use strict;
use warnings;
use open qw(:utf8 :std);
our $VERSION='0.11';
sub new {
my ($class, $filename) = @_;
my $annotationFilename;
my $textFilename;
my $textSize = 0;
my @annFiles;
my @textFiles;
my @files;
my $f;
my $line;
# print STDERR "\n==> $filename - " . ref($filename) . ";\n";
if (defined $filename) {
if (ref($filename) eq "") {
push @files, $filename;
} elsif (ref($filename) eq "ARRAY") {
push @files, @$filename;
}
}
foreach $f (@files) {
# warn "$f\n";
$annotationFilename = $f;
$annotationFilename =~ s/\.txt$/.ann/;
$textFilename = $f;
$textFilename =~ s/\.ann$/.txt/;
$textSize = 0;
open FILE, $textFilename or die "no such file $textFilename\n";
while($line = <FILE>) {
$textSize += length($line);
}
close FILE;
# my @s = stat($textFilename);
# $textSize += $s[7];
push @annFiles, $annotationFilename;
push @textFiles, $textFilename;
}
my $bratfile = {
'annotationFilename' => [@annFiles],
'textFilename' => [@textFiles],
'terms' => {},
'relations' => {},
'attributes' => {},
'maxTermId' => 0,
'maxRelationId' => 0,
'maxAttributeId' => 0,
'textSize' => $textSize,
};
bless($bratfile, $class);
if (defined $filename) {
if (ref($filename) eq "") {
$bratfile->loadBratFile;
} elsif (ref($filename) eq "ARRAY") {
warn "load of several brat files not implemented\n";
}
}
return($bratfile);
}
sub _textFilename {
my $self = shift;
if (@_) {
my $arg = shift;
push @{$self->{'textFilename'}}, $arg;
}
return($self->{'textFilename'});
}
sub _textSize {
my $self = shift;
if (@_) {
$self->{'textSize'} = shift;
}
return($self->{'textSize'});
}
sub _annotationFilename {
my $self = shift;
if (@_) {
my $arg = shift;
if ($arg =~ /^\d+$/) {
return($self->{'annotationFilename'}->[$arg]);
} else {
push @{$self->{'annotationFilename'}}, $arg;
}
}
return($self->{'annotationFilename'});
}
( run in 1.938 second using v1.01-cache-2.11-cpan-84de2e75c66 )