Template::Plugin::VimColor
Text::VimColor はソースコードをいい感じにマークアップしてくれるモジュールで、テキストの中の Perl コードに色を付けたりするのになかなか便利。
TT から利用できるといいなということで、
<pre>
[% FILTER vimcolor %]
#!/usr/local/bin/perl
use strict;
use warnings;
print "Hello, World!";
sub foo {
my $self = shift;
return "bar";
}
[% END %]
</pre>と書くと

と言う風になるようにしたい。例によって Template::Plugin::Filter で
package Template::Plugin::VimColor;
use strict;
use base qw (Template::Plugin::Filter);
use Text::VimColor;
our $VERSION = 0.01;
sub init {
my $self = shift;
$self->{_DYNAMIC} = 1;
$self->install_filter($self->{_ARGS}->[0] || 'vimcolor');
$self;
}
sub filter {
my ($self, $text, $args, $config) = @_;
my $filetype = delete $config->{filetype} || 'perl';
my $syntax = Text::VimColor->new(
string => ?$text,
filetype => $filetype,
%$config,
);
return $syntax->html;
}
1;としてまずは簡単だけど所望の物はできましたと。あとはこれに Apache::VimColor みたく Cache::Cache でキャッシュするようにした方がいいかなと思ったところで、Cache オブジェクトの ID をどうしようかなとか考えてたらちょっと萎え。
ひとまずこれでいいので CPAN にうpしようと思ったけど時間切れ。数日ネットのない生活を送ります。みなさんよいお年を。