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 )