dispatch —
Interchange 5.9.0:
Source: lib/Vend/Interpolate.pm
Lines: 4003
sub tag_dispatch {
my($tag, $count, $item, $hash, $chunk) = @_;
$tag = lc $tag;
$tag =~ tr/-/_/;
my $full = lc "$Orig_prefix-tag-$tag";
$full =~ tr/-/_/;
#::logDebug("tag_dispatch: tag=$tag count=$count chunk=$chunk");
my $attrseq = [];
my $attrhash = {};
my $eaten;
my $this_tag;
$eaten = Vend::Parse::_find_tag(\$chunk, $attrhash, $attrseq);
substr($chunk, 0, 1) = '';
$this_tag = Vend::Parse::find_matching_end($full, \$chunk);
$attrhash->{prefix} = $tag unless $attrhash->{prefix};
my $out;
if(defined $Dispatch_hash{$tag}) {
$out = $Dispatch_hash{$tag}->($count, $item, $hash, $attrhash, $this_tag);
}
else {
$attrhash->{body} = $this_tag unless defined $attrhash->{body};
#::logDebug("calling tag tag=$tag this_tag=$this_tag attrhash=" . uneval($attrhash));
$Tag ||= new Vend::Tags;
$out = $Tag->$tag($attrhash);
}
return $out . $chunk;
}