Alvis-Convert

 view release on metacpan or  search on metacpan

lib/Alvis/Wikipedia/Templates.pm  view on Meta::CPAN

	    warn "Excessive expansion stopped for \"$self->{currNamespace}:$self->{currTitle}\"" .
		". Length of the text to expand: " .
		length($text) . ", # of expansions: " . $self->{nofExpansions};
		return $text;
	}

	warn "BEFORE VARIABLE SUBSITUTION\n" if $DEBUG;
	# Variable substitution
	$text=~s/(\{\{([ %!\"\$\&\'\(\)\*,\-\.\/0-9:;=\?\@A-Z\\\^_\`a-z\~\x80-\xFF\n]*?)\}\})/$self->_substitute_variable($1,$2)/sgeo;
	warn "TEXT AFTER VARIABLE SUBSTITUTION:$text\n" if $DEBUG;
	
	# Template substitution
	$text=~s/(([^\{])?\{\{([ %!\"\$\&\'\(\)\*,\-\.\/0-9:;=\?\@A-Z\\\^_\`a-z\~\x80-\xFF\n]*)(\|[^\{]*?)?\}\})/$self->_substitute_template($1,$2,$3,$4,$expand_for_real)/sgeo;
	
	warn "TEXT AFTER TEMPLATE SUBSTITUTION:$text\n" if $DEBUG;
    
	for my $name (keys %{$self->{thisLevelExpandedNames}})
	{
	    $self->{higherLevelExpandedNames}->{$name}=1;
	}
    }

    return $text;

}

sub _substitute_variable
{
    my $self=shift;
    my $text=shift;
    my $var_name=shift;
    
    if ($var_name=~/^(localurle?|fullurl):(.*)$/isgo)
    {
	my ($var,$rest)=($1,$2);
	if ($rest)
	{
	    return $VarSubst{$var} . $rest;
	}
	else
	{
	    return $VarSubst{$var};
	}
    }
    elsif (exists($VarSubst{$var_name}))
    {
	return $VarSubst{$var_name};
    }
    elsif ($var_name=~/^(subst|int):/isgo)
    {
	$var_name=~s/^(subst|int)://isgo;
    }
    elsif ($var_name=~/^(FULL)?PAGENAMEE?$/)
    {
	return $self->{currTitle};
    }
    elsif ($var_name=~/^NAMESPACEE?$/)
    {
	return $self->{currNamespace};
    }
    elsif ($var_name=~/^(__NOTOC__|__FORCETOC__|__TOC__|__NOEDITSECTION__|__START__|CURRENT(MONTH|MONTHNAME|MONTHNAMEGEN|MONTHABBREV|DAY|DAYNAME|YEAR|TIME)|NUMBEROFARTICLES|NUMBEROFFILES|PAGENAMEE|NAMESPACE|__END__|thumbnail|thumb|right|left|none|cen...
    {
	return "$var_name";
    }
    else
    {
	return $text;
    }
}

sub _substitute_template
{
    my $self=shift;
    my $orig_text=shift;
    my $pre_context=shift;
    my $name=shift;
    my $params=shift;
    my $expand_for_real=shift;

    my $found=0;

    my $expanded_text;
    my %arg_assignments=(); 

    $name=$self->{parser}->normalize_title($name);

    warn "substitute_template():" if $DEBUG;
    warn "PRE:\"$pre_context\"\n" if $DEBUG;
    warn "NAME:\"$name\"\n" if $DEBUG;
    warn "PARAMS:\"$params\"\n" if $DEBUG;

    # Don't parse {{{}}} because that's only for template arguments
    if (defined($pre_context) && $pre_context eq '{') 
    {
	warn "{ PRE-CONTEXT\n" if $DEBUG;
	return $orig_text;
    }

    # Ok, now expand if it's a template
    
    # Do we know this template or don't we care anyway?
    if (($name && exists($self->{defs}{$name})) || !$expand_for_real) 
    {
	warn "TEMPLATE $name FOUND\n" if $DEBUG;

	$found=1;
	
	if (defined($pre_context))
	{
	    $expanded_text=$pre_context;
	}

	#
        # Not recommended atm .. the bloody syntax seems to keep
        # on changing with each new server alpha version
	#
	if ($expand_for_real)
	{
	    $expanded_text.=$self->{defs}{$name};
	    warn "TEXT AFTER ADDING EXPANSION:$expanded_text\n" if $DEBUG;
	    



( run in 2.413 seconds using v1.01-cache-2.11-cpan-5837b0d9d2c )