Commit | Line | Data |
7c781a87 |
1 | use MooseX::Declare; |
a8f57013 |
2 | use Syntax::Highlight::Engine::Kate (); |
3 | |
4 | our @interpreters = ( |
5 | 'awk', |
6 | 'bash', |
7 | 'ksh', |
8 | 'make', |
9 | 'node', |
10 | 'perl', |
11 | 'prolog', |
12 | 'python', |
13 | 'ruby', |
14 | 'sh', |
15 | 'tcl', |
16 | ); |
17 | |
18 | our %interpretersx = ( |
19 | 'awk' => 'AWK', |
20 | 'ksh' => 'Bash', |
21 | 'make' => 'Makefile', |
22 | 'node' => 'Javascript', |
23 | 'sh' => 'Bash', |
24 | ); |
7c781a87 |
25 | |
26 | class Gitalist::ContentMangler::Resolver::Default with Gitalist::ContentMangler::Resolver { |
27 | method resolve ($data) { |
a8f57013 |
28 | if($data->{action} eq 'diff_fancy') { |
29 | return 'Gitalist::ContentMangler::Transformer::SyntaxHighlight' => {language => 'Diff', css => 'Diff'}; |
30 | } |
31 | my $kate = Syntax::Highlight::Engine::Kate->new(); |
32 | # Detect .t files as perl code |
33 | $kate->extensions->{'*.t'} = ['Perl']; |
34 | my $language = $kate->languagePropose($data->{filename}) || $kate->languagePropose(lc $data->{filename}); |
35 | if(!$language && exists($data->{blob})) { |
36 | my $interp = substr(${$data->{blob}}, 0, 256); |
37 | if($interp =~ /^#!(?:\S*\/)?([^\s\/]+)/) { |
38 | my $interp = $1; |
39 | |
40 | for my $interpreter (@interpreters) { |
41 | if($interp =~ /$interpreter/) { |
42 | $language = $interpretersx{$interpreter} || ucfirst $interpreter; |
43 | last; |
44 | } |
45 | } |
46 | } |
47 | } |
bfa60830 |
48 | return unless $language; |
a8f57013 |
49 | return 'Gitalist::ContentMangler::Transformer::SyntaxHighlight' => {language => $language, css => 'Code'}; |
7c781a87 |
50 | } |
bfa60830 |
51 | } |