Alvis-Convert
view release on metacpan or search on metacpan
lib/Alvis/Document/Encoding.pm view on Meta::CPAN
$ERR_ENCODE_GUESS=>"Encode::Guess failed.",
$ERR_GUESS_AND_CONVERT=>"Guessing an encoding and then " .
"converting failed.",
$ERR_UNABLE_TO_GUESS=>"Unable to guess at encoding name " .
"corrections."
);
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};
}
#############################################################################
#
# Methods
#
##############################################################################
sub new
{
my $proto=shift;
my $class=ref($proto)||$proto;
my $parent=ref($proto)&&$proto;
my $self={};
bless($self,$class);
$self->_init(@_);
$self->_set_err_state($ERR_OK);
$self->{docTypeWizard}=
Alvis::Document::Type->new(defaultType=>
$self->{defaultDocType},
defaultSubType=>
$self->{defaultDocSubType});
if (!defined($self->{docTypeWizard}))
{
$self->_set_err_state($ERR_DOC_TYPE_WIZARD);
return undef;
}
Encode::Guess->add_suspects(qw/latin1 iso-8859-2 iso-8859-5 iso-8859-10 iso-8859-7 windows-1252/);
return $self;
}
sub _init
{
my $self=shift;
$self->{defaultDocType}='text';
$self->{defaultDocSubType}='html';
$self->{defaultEncoding}='iso-8859-1';
if (defined(@_))
{
my %args=@_;
@$self{ keys %args }=values(%args);
}
}
##########################################################################
#
# Public methods
#
#########################################################################
#
# Returns 1 if the (decimal) character code is legal UTF-8
#
sub code_is_utf8
{
my $self=shift;
my $dec_code=shift;
# check for invalid codes
if ($dec_code<0 || $dec_code>1114111 || $InvalidUtf8Code{$dec_code})
{
return 0;
}
return 1;
}
#
( run in 0.729 second using v1.01-cache-2.11-cpan-39bf76dae61 )