Alvis-Convert
view release on metacpan or search on metacpan
lib/Alvis/Document.pm view on Meta::CPAN
package Alvis::Document;
########################################################################
#
# Assembles an ALVIS XML documentRecord from given pieces
#
# -- Kimmo Valtonen
#
########################################################################
use strict;
use warnings;
use Carp;
use Data::Dumper;
use Digest::MD5;
use Compress::Zlib;
use MIME::Base64;
use Encode;
use Alvis::Document::Meta;
use Alvis::Document::Links;
use strict;
my ($ERR_OK,
$ERR_CAN_DOC,
$ERR_META,
$ERR_DATE,
$ERR_URL,
$ERR_NO_LINK_TYPE,
$ERR_LINKS_TXT
)=(0..6);
my %ErrMsgs=($ERR_OK=>"",
$ERR_CAN_DOC=>"No canonicalDocument.",
$ERR_META=>"No meta information.",
$ERR_DATE=>"No document date.",
$ERR_URL=>"No URL.",
$ERR_NO_LINK_TYPE=>"No type for a link.",
$ERR_LINKS_TXT=>"Assembling links text failed."
);
sub new
{
my $proto=shift;
my $class=ref($proto)||$proto;
my $parent=ref($proto)&&$proto;
my $self={};
bless($self,$class);
$self->_set_err_state($ERR_OK);
$self->_init(@_);
return $self;
}
sub _init
{
my $self=shift;
$self->{includeOriginalDocument}=1;
if (defined(@_))
{
my %args=@_;
@$self{ keys %args }=values(%args);
}
}
sub _set_err_state
{
my $self=shift;
my $errcode=shift;
my $errmsg=shift;
if (!defined($errcode))
{
confess("set_err_state() called with an undefined argument.");
}
if (exists($ErrMsgs{$errcode}))
{
if ($errcode==$ERR_OK)
{
$self->{'errstr'}="";
}
else
{
$self->{'errstr'}.=" " . $ErrMsgs{$errcode};
if (defined($errmsg))
{
$self->{'errstr'}.=" " . $errmsg;
}
}
}
else
{
confess("Internal error: set_err_state() called with an " .
"unrecognized argument ($errcode).")
}
}
sub errmsg
{
my $self=shift;
return $self->{errstr};
}
( run in 2.088 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )