package Template::Plugin::WikiFormat; use strict; use warnings; our $VERSION = '0.04'; #---------------------------------------------------------------------------- =head1 NAME Template::Plugin::WikiFormat - TT wrapper for Text::WikiFormat =head1 SYNOPSIS [% USE WikiFormat %] [% FILTER $WikiFormat %] ... [% END %] =head1 DESCRIPTION This is a plugin used for wiki rendering inside Template Toolkit. Parameters may be passed in through the USE directive, e.g. [% USE WikiFormat prefix = "http://www.mysite.com/?page=" %] This provides the 4 options supported by L, i.e. C, and the special option global_replace, which takes an array of arrays of from and to strings. The output from Text::WikiFormat is post processed by replacing each from regexp with the to regexp. Anything else passed in is interpreted as a tag (see the Gory Details section). =head2 filter Accepts the wiki text to be rendered, and context. The tags and options are passed in through the context. See L. =cut #---------------------------------------------------------------------------- ############################################################################# #Library Modules # ############################################################################# use base 'Template::Plugin::Filter'; use Text::WikiFormat; #---------------------------------------------------------------------------- ############################################################################# #Interface Methods # ############################################################################# sub filter { my ( $self, $text ) = @_; my $conf = $self->{_CONFIG}; $conf ||= {}; my %tags = %$conf; my %opts; my %default = ( prefix => '', extended => 0, implicit_links => 1, absolute_links => 0, ); for ( keys %default ) { $opts{$_} = $tags{$_} || $default{$_}; delete $tags{$_}; } my $replace; if ( exists $tags{global_replace} ) { $replace = $tags{global_replace}; delete $tags{global_replace}; } my $output = Text::WikiFormat::format( $text, \%tags, \%opts ); for my $rep (@$replace) { my ( $from, $to ) = @$rep; eval("\$output =~ s($from)($to)sg"); } return $output; } 1; __END__ #---------------------------------------------------------------------------- =head1 SEE ALSO L =head1 BUGS, PATCHES & FIXES There are no known bugs at the time of this release. However, if you spot a bug or are experiencing difficulties that are not explained within the POD documentation, please send an email to barbie@cpan.org or submit a bug to the RT system (see link below). However, it would help greatly if you are able to pinpoint problems or even supply a patch. http://rt.cpan.org/Public/Dist/Display.html?Name=Template-Plugin-WikiFormat Fixes are dependant upon their severity and my availablity. Should a fix not be forthcoming, please feel free to (politely) remind me. =head1 AUTHOR Original Author: Ivor Williams (RIP) 2008-2009 Current Maintainer: Barbie 2009 =head1 COPYRIGHT AND LICENSE Copyright (C) 2008-2009 Ivor Williams Copyright (C) 2009 Barbie This distribution is free software; you may redistribute it and/or modify it under the same terms as Perl itself. The full text of the license can be found in the LICENSE file included with this distribution. =cut