diff options
author | Eric Wong <e@80x24.org> | 2019-02-05 05:24:39 +0000 |
---|---|---|
committer | Eric Wong <e@80x24.org> | 2019-02-05 10:58:35 +0000 |
commit | 7826c91ef37f9b5fb5396e1168d84a6574385915 (patch) | |
tree | 6eb34d14c43702e9e9a9dba2e7aa37da824d12fc /lib | |
parent | 60917f384645df7798a9b81ef26ca06df1986072 (diff) | |
download | public-inbox-7826c91ef37f9b5fb5396e1168d84a6574385915.tar.gz |
This is compatible with Markdown; but we still keep the WYSIWYG nature of plain-text with this. This is only intended for use with our documentation. Enabling any type of Markdown support for emails can lead to incompatibilities or interopability problems with alternative implementations.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/PublicInbox/HlMod.pm | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/lib/PublicInbox/HlMod.pm b/lib/PublicInbox/HlMod.pm index 014d82fd..36e31106 100644 --- a/lib/PublicInbox/HlMod.pm +++ b/lib/PublicInbox/HlMod.pm @@ -16,7 +16,7 @@ package PublicInbox::HlMod; use strict; use warnings; use highlight; # SWIG-generated stuff -use PublicInbox::Hval qw(src_escape); +use PublicInbox::Hval qw(src_escape ascii_html); my $hl; sub _parse_filetypes ($) { @@ -127,4 +127,23 @@ sub do_hl_lang { \$out; } +# Highlight text, but support Markdown "```$LANG" notation +# while preserving WYSIWYG of plain-text documentation. +# This is NOT to be enabled by default or encouraged for parsing +# emails, since it is NOT stable and can lead to standards +# proliferation of email. +sub do_hl_text { + my ($self, $str) = @_; + + $$str = join('', map { + if (/\A(``` ?)(\w+)\s*?\n(.+)(^```\s*)\z/sm) { + my ($pfx, $lang, $code, $post) = ($1, $2, $3, $4); + my $hl = do_hl_lang($self, \$code, $lang) || \$code; + $pfx . $lang . "\n" . $$hl . $post; + } else { + ascii_html($_); + } + } split(/(^``` ?\w+\s*?\n.+?^```\s*$)/sm, $$str)); +} + 1; |