lib/PublicInbox/HlMod.pm | 15 ++++++++++----- t/hl_mod.t | 2 ++ diff --git a/lib/PublicInbox/HlMod.pm b/lib/PublicInbox/HlMod.pm index decfd714d7ba5e0551b125de94cf16d056642ca6..284e4b1896d46db23fe73613849604448f9c49ec 100644 --- a/lib/PublicInbox/HlMod.pm +++ b/lib/PublicInbox/HlMod.pm @@ -83,19 +83,24 @@ sub do_hl { my ($self, $str, $path) = @_; my $lang = _path2lang($self, $path) if defined $path; + do_hl_lang($self, $str, $lang); +} + +sub do_hl_lang { + my ($self, $str, $lang) = @_; + my $dir = $self->{-dir}; my $langpath; + if (defined $lang) { $langpath = $dir->getLangPath("$lang.lang") or return; - $langpath = undef unless -f $langpath; + $lang = undef unless -f $langpath } - unless (defined $langpath) { + unless (defined $lang) { $lang = _shebang2lang($self, $str) or return; $langpath = $dir->getLangPath("$lang.lang") or return; - $langpath = undef unless -f $langpath; + return unless -f $langpath } - return unless defined $langpath; - my $gen = $self->{$langpath} ||= do { my $g = highlight::CodeGenerator::getInstance($highlight::HTML); $g->setFragmentCode(1); # generate html fragment diff --git a/t/hl_mod.t b/t/hl_mod.t index c402f1f784f40b3963b53407d706e9bf4d7d93df..238f8ec55b5c23a18ae7a82e9c008fe22ec7f06a 100644 --- a/t/hl_mod.t +++ b/t/hl_mod.t @@ -22,6 +22,8 @@ is(ref($ref), 'SCALAR', 'got a scalar reference back'); ok(utf8::valid($$ref), 'resulting string is utf8::valid'); like($$ref, qr/I can see you!/, 'we can see ourselves in output'); like($$ref, qr/&&/, 'escaped'); + my $lref = $hls->do_hl_lang(\$str, 'perl'); + is($$ref, $$lref, 'do_hl_lang matches do_hl'); use PublicInbox::Spawn qw(which); if (eval { require IPC::Run } && which('w3m')) {