Alvis-Convert
view release on metacpan or search on metacpan
lib/Alvis/Document.pm view on Meta::CPAN
{
$self->{'errstr'}.=" " . $errmsg;
}
}
}
else
{
confess("Internal error: set_err_state() called with an " .
"unrecognized argument ($errcode).")
}
}
sub errmsg
{
my $self=shift;
return $self->{errstr};
}
############################################################################
#
# Public methods
#
############################################################################
sub assemble
{
my $self=shift;
my $ingredients=shift;
if (!defined($ingredients->{canDoc}))
{
$self->_set_err_state($ERR_CAN_DOC);
return undef;
}
if (!defined($ingredients->{meta}))
{
$self->_set_err_state($ERR_META);
return undef;
}
if (!defined($ingredients->{meta}->get('date')))
{
$self->_set_err_state($ERR_DATE);
return undef;
}
if (!defined($ingredients->{meta}->get('url')))
{
$self->_set_err_state($ERR_URL);
return undef;
}
my $XML;
my $md5;
if (defined($ingredients->{origText}) && $self->{includeOriginalDocument})
{
$md5=uc(Digest::MD5->new->add($ingredients->{origText})->hexdigest());
}
else
{
$md5=uc(Digest::MD5->new->add(encode_utf8($ingredients->{canDoc}))->hexdigest());
}
$XML.=" <documentRecord id=\"$md5\" xmlns=\"http://alvis.info/enriched/\">\n";
$XML.=" <acquisition>\n";
my $last_modified;
if (defined($ingredients->{meta}->get('date')))
{
$last_modified=$ingredients->{meta}->get('date');
}
else
{
$last_modified=$ingredients->{meta}->get('dc:date');
}
$last_modified=$self->_txt2XMLsafe($last_modified);
my $http_server;
if (defined($ingredients->{meta}->get('server')))
{
$http_server=$self->_txt2XMLsafe($ingredients->{meta}->get('server'));
}
$XML.=$self->_acquisition_data($last_modified,
$http_server,
$self->_txt2XMLsafe(
$ingredients->{meta}->get('url')));
if (defined($ingredients->{origText}) && $self->{includeOriginalDocument})
{
$XML.=" " .
$self->_original_document($ingredients->{origText}) . "\n";
}
$XML.=$self->_canonical_document($ingredients->{canDoc});
$XML.=$self->_meta_data($ingredients->{meta});
if (defined($ingredients->{links}))
{
my $links_txt=$self->_links($ingredients->{links});
if (!defined($links_txt))
{
$self->_set_err_state($ERR_LINKS_TXT);
return undef;
}
$XML.=$links_txt;
}
$XML.=" </acquisition>\n";
$XML.=" </documentRecord>\n";
return $XML;
}
sub set
{
my $self=shift;
my $option=shift;
my $value=shift;
$self->{$option}=$value;
}
############################################################################
#
# Private methods
#
( run in 0.493 second using v1.01-cache-2.11-cpan-140bd7fdf52 )