package Codestriker::Template::Plugin::AutomagicLinks;
# Simple template toolkit plugin module for automagically changing all
# URLs to be hyperlinked, and all text in the form "Bug \d+" to be changed
# to link with the associated bug record if a bugtracking system is
# registered with the system.
use Template::Plugin::Filter;
use Codestriker;
use base qw( Template::Plugin::Filter );
sub filter {
my ($self, $text) = @_;
# First handle any URL linking.
my @words = split /(\s)/, $text;
my $result = "";
for (my $i = 0; $i <= $#words; $i++) {
if ($words[$i] =~ /^([A-Za-z]+:\/\/.*[A-Za-z0-9_])(.*)$/o) {
# A URL, create a link to it.
$result .= "$1$2";
} else {
$result .= $words[$i];
}
}
# If there is a link to a bug tracking system, automagically modify all
# text of the form "[Bb]ug \d+" to a hyperlink for that bug record.
if (defined $Codestriker::bugtracker && $Codestriker::bugtracker ne "") {
$result =~ s/(\b)([Bb][Uu][Gg]\s*(\d+))(\b)/$1$1$2$4<\/A>/mg;
}
return $result;
}
1;