1 package Gitalist::View::SyntaxHighlight;
3 use Gitalist; # ->path_to
4 use namespace::autoclean;
6 extends 'Catalyst::View';
8 use Syntax::Highlight::Engine::Kate ();
9 use Syntax::Highlight::Engine::Kate::Perl ();
11 use HTML::Entities qw(encode_entities);
16 if($c->stash->{filename} =~ /\.p[lm]$/) {
18 # http://github.com/jrockway/angerwhale/blob/master/lib/Angerwhale/Format/Pod.pm#L136
20 no warnings 'redefine';
21 local *Syntax::Highlight::Engine::Kate::Template::logwarning
22 = sub { die @_ }; # i really don't care
23 my $hl = Syntax::Highlight::Engine::Kate->new(
33 # convert Kate's internal representation into
34 # <span class="<internal name>"> value </span>
36 $_ => [ qq{<span class="$_">}, '</span>' ]
38 qw/Alert BaseN BString Char Comment DataType
39 DecVal Error Float Function IString Keyword
40 Normal Operator Others RegionMarker Reserved
41 String Variable Warning/,
45 $c->stash->{blob} = $hl->highlightText($c->stash->{blob});
49 $c->stash->{blob} = encode_entities($c->stash->{blob});
52 $c->forward('View::Default');
55 __PACKAGE__->meta->make_immutable;