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 )