Alvis-Convert
view release on metacpan or search on metacpan
lib/Alvis/Wikipedia/Variables.pm view on Meta::CPAN
}
return $self;
}
sub _init
{
my $self=shift;
if (defined(@_))
{
my %args=@_;
@$self{ keys %args }=values(%args);
}
}
sub add_template
{
my $self=shift;
my $name=shift;
my $def=shift;
if (!$self->{templates}->add($name,$def))
{
$self->_set_err_state($ERR_TEMPL_ADD,
"Name:\"$name\", Definition:\"$def\".");
return 0;
}
return 1;
}
sub dump_templates
{
my $self=shift;
my $f=shift;
if (!$self->{templates}->dump($f))
{
$self->_set_err_state($ERR_TEMPL_DUMP,$self->{templates}->errmsg());
return 0;
}
return 1;
}
sub load_templates
{
my $self=shift;
my $f=shift;
if (!$self->{templates}->load($f))
{
$self->_set_err_state($ERR_TEMPL_LOAD,$self->{templates}->errmsg());
return 0;
}
return 1;
}
sub expand
{
my $self=shift;
my $namespace=shift;
my $title=shift;
my $text=shift;
my $expand_templates_for_real=shift; # do we expand the templates fully?
#
# Problems: <math>,<nowiki>...safeguard them
#
my $sep_text=$self->{parser}->separate_markup($text);
if (!defined($sep_text))
{
$self->_set_err_state($ERR_SEP,"Text:\"$text\"");
return "";
}
my $exp_text="";
for my $s (@$sep_text)
{
my ($type,$t)=@$s;
if ($type eq $Alvis::Wikipedia::WikitextParser::MARKUP)
{
# warn "MARKUP TO EXPAND:$t\n";
my $exp_t=$self->{templates}->expand($namespace,$title,$t,
$expand_templates_for_real);
if (!defined($exp_t))
{
$self->_set_err_state($ERR_EXP,"Text:\"$t\"");
return undef;
}
else
{
$exp_text.=$exp_t;
}
}
else
{
$exp_text.=$t;
}
}
return $exp_text;
}
1;
( run in 1.962 second using v1.01-cache-2.11-cpan-5623c5533a1 )