* [PATCH 2/6] hlmod: hoist out do_hl_lang sub
2019-02-05 11:10 7% [PATCH 0/6] highlighting cleanups + help update Eric Wong
@ 2019-02-05 11:10 6% ` Eric Wong
0 siblings, 0 replies; 2+ results
From: Eric Wong @ 2019-02-05 11:10 UTC (permalink / raw)
To: meta
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
^ permalink raw reply related [relevance 6%]
* [PATCH 0/6] highlighting cleanups + help update
@ 2019-02-05 11:10 7% Eric Wong
2019-02-05 11:10 6% ` [PATCH 2/6] hlmod: hoist out do_hl_lang sub Eric Wong
0 siblings, 1 reply; 2+ results
From: Eric Wong @ 2019-02-05 11:10 UTC (permalink / raw)
To: meta
Experimenting with using Markdown-style "```$LANG" blocks
support for our user documentation. It makes the CSS
example easier-to-follow when the CSS source is in front
of the user.
Markdown-style blocks definitely won't be enabled by default for
emails. I don't want to encourage people to use Markdown in
emails (as that inevitably ends with "which flavor?") and the
same mess with privacy/compatibility problems have with HTML
mail.
But preserving the WYSIWYG nature of plain-text while allowing a
tiny subset of Markdown (we already respect it for
linkification) might be useful for mailing lists which forward
messages from Markdown-supported forums/trackers (e.g. Redmine
and ruby-core mailing list).
Eric Wong (6):
viewvcs: cleanup utf8 handling
hlmod: hoist out do_hl_lang sub
hlmod: make into a singleton
hlmod: do_hl* performs src_escape immediately
hlmod: support "```$LANG" blocks in text
wwwtext: inline sample CSS and use highlight
contrib/css/216dark.css | 30 ++++++++++--------
lib/PublicInbox/HlMod.pm | 70 ++++++++++++++++++++++++++++--------------
lib/PublicInbox/UserContent.pm | 16 +++++-----
lib/PublicInbox/ViewVCS.pm | 14 ++-------
lib/PublicInbox/WwwText.pm | 35 ++++++++++-----------
t/hl_mod.t | 34 ++++++++++++--------
6 files changed, 114 insertions(+), 85 deletions(-)
--
EW
^ permalink raw reply [relevance 7%]
Results 1-2 of 2 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2019-02-05 11:10 7% [PATCH 0/6] highlighting cleanups + help update Eric Wong
2019-02-05 11:10 6% ` [PATCH 2/6] hlmod: hoist out do_hl_lang sub Eric Wong
Code repositories for project(s) associated with this public inbox
https://80x24.org/public-inbox.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).