Alvis-Convert
view release on metacpan or search on metacpan
lib/Alvis/Wikipedia/WikitextParser.pm view on Meta::CPAN
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 clearerr
{
my $self=shift;
$self->{errstr}="";
}
sub errmsg
{
my $self=shift;
return $self->{errstr};
}
####################################################################
#
# Public methods
#
####################################################################
sub new
{
my $proto=shift;
my $class=ref($proto)||$proto;
my $parent=ref($proto)&&$proto;
my $self={};
bless($self,$class);
$self->_init(@_);
return $self;
}
sub _init
{
my $self=shift;
if (defined(@_))
{
my %args=@_;
@$self{ keys %args }=values(%args);
}
}
sub normalize_title
{
my $self=shift;
my $title=shift;
if (!defined($title))
{
$self->_set_err_state($ERR_UNDEF_TITLE);
return undef;
}
#
# subst:, template:, msg: etc.
#
$title=~s/^\w*://isgo;
#
# Do a bunch of ill-documented & idiotic normalizations.
# 50,000,000 flies can't be wrong.
#
# space/underscore
$title=~s/^\s+//isgo;
$title=~s/\s+$//isgo;
$title=~s/[ ]+/\_/isgo;
$title=~s/\_+/\_/isgo;
$title=~s/^\_+//isgo;
$title=~s/\_+$//isgo;
if ($title=~/^\_+$/)
{
$self->_set_err_state($ERR_ONLY_UNDERSCORES_LEFT);
return undef;
}
if ($title=~/^\.\.?\/?$/)
{
$self->_set_err_state($ERR_RELATIVE_PATH);
return undef;
}
$title=~s/\?/\%3F/isgo;
$title=~s/\//\&\#47;/isgo;
#
( run in 2.209 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )