From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 66AC22141C for ; Tue, 5 Feb 2019 11:10:54 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 2/6] hlmod: hoist out do_hl_lang sub Date: Tue, 5 Feb 2019 11:10:49 +0000 Message-Id: <20190205111053.7155-3-e@80x24.org> In-Reply-To: <20190205111053.7155-1-e@80x24.org> References: <20190205111053.7155-1-e@80x24.org> List-Id: 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 decfd71..284e4b1 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 c402f1f..238f8ec 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')) { -- EW