Text::TracのAutoLinkHttpNode.pm

mizzyさんが公開しているText::Trac::AutoLinkHttpNode.pmをハックして見ました。


package Text::Trac::AutoLinkHttpNode;
use base qw(Text::Trac::InlineNode);
use strict;

my $url_regex = 'https?:\/\/[A-Za-z0-9~\/._\?\&=\-%#\+:\;,\@\']+[A-Za-z0-9~\/_\?\&=\-%#\+:\;\@\']';

sub init {
my $self = shift;
$self->pattern(qr/ $url_regex /xms);
return $self;
}

sub parse {
my($self, $l) = @_;
$l =~ s{(?:^|\ )($url_regex)}{ [$1 $1]}xmsg;
if ($& =~ /\.(png|gif|jpg)$/){
$l =~ s{\[(.*?)\ (.*?)\]}{<img src="$1" alt="$2" />}xmsg;
}else{
$l =~ s{\[(.*?)\ (.*?)\]}{<a class="ext-link" href="$1">$2</a>}xmsg;
}
return $l;
}

1;