From 58db2bbcbc9836fe36c91eff761e31edfd53f866 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sat, 2 Feb 2019 06:02:41 +0000 Subject: hlmod: hoist out do_hl_lang sub We'll want to use to support highlighting syntax used by Markdown and possibly other markup languages (while retaining the raw plain-text layout and formatting). --- lib/PublicInbox/HlMod.pm | 15 ++++++++++----- t/hl_mod.t | 2 ++ 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/lib/PublicInbox/HlMod.pm b/lib/PublicInbox/HlMod.pm index decfd714..284e4b18 100644 --- a/lib/PublicInbox/HlMod.pm +++ b/lib/PublicInbox/HlMod.pm @@ -83,19 +83,24 @@ sub _path2lang ($$) { 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 c402f1f7..238f8ec5 100644 --- a/t/hl_mod.t +++ b/t/hl_mod.t @@ -22,6 +22,8 @@ my $orig = $str; 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')) { -- cgit v1.2.3-24-ge0c7