3 role Gitalist::ContentMangler::Transformer::SyntaxHighlightRole {
4 use Syntax::Highlight::Engine::Kate ();
5 use Syntax::Highlight::Engine::Kate::Perl ();
7 use HTML::Entities qw(encode_entities);
9 method highlight(Str $blob, Str $lang) {
10 # Don't bother with anything over 128kb, it'll be tragically slow.
11 return encode_entities $blob if length $blob > 131_072;
15 # via http://github.com/jrockway/angerwhale/blob/master/lib/Angerwhale/Format/Pod.pm#L136
17 no warnings 'redefine';
18 local *Syntax::Highlight::Engine::Kate::Template::logwarning
19 = sub { die @_ }; # i really don't care
20 my $hl = Syntax::Highlight::Engine::Kate->new(
30 # convert Kate's internal representation into
31 # <span class="<internal name>"> value </span>
33 $_ => [ qq{<span class="$_">}, '</span>' ]
35 qw/Alert BaseN BString Char Comment DataType
36 DecVal Error Float Function IString Keyword
37 Normal Operator Others RegionMarker Reserved
38 String Variable Warning/,
42 my $hltxt = $hl->highlightText($blob);
43 $hltxt =~ s/([^[:ascii:]])/encode_entities($1)/eg;
49 return $ret || encode_entities($blob);