File: Wiki.pm

package info (click to toggle)
libtext-trac-perl 0.16-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 364 kB
  • ctags: 257
  • sloc: perl: 2,971; makefile: 2
file content (32 lines) | stat: -rwxr-xr-x 752 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package Text::Trac::LinkResolver::Wiki;

use strict;
use base qw( Text::Trac::LinkResolver );

our $VERSION = '0.16';

sub init {
    my $self = shift;
    $self->{pattern} = '!?(?<!/)\b[A-Z][a-z]+(?:[A-Z][a-z]*[a-z/])+' .
                       '(?:\#[A-Za-z_:][A-Za-z0-9_:.-]*)?(?=\Z|[\s.,;:!?\)\}\]])';
}

sub format_link {
    my ( $self, $match, $target, $label ) = @_;
    return $match if $self->_is_disabled;

    my $c = $self->{context};
    $label  ||= $match;
    $target ||= $match;

    if ( $label =~ /\[wiki:(\S+)\s+(.+)\]/ ) {
        $target = $1;
        $label  = $2;
    }

    my $url = $c->{trac_wiki_url} || $c->trac_url . "wiki/";
    $url .= $target;
    return sprintf '<a class="wiki" href="%s">%s</a>', $url, $label;
}

1;