X-Git-Url: https://git.madduck.net/etc/mutt.git/blobdiff_plain/bd5f4f7fbc5cdb51358cb9cfce9f480a2c7d2804..8be08dfe23a1020daa3f08b4ce31cef3d030cfed:/.mutt/markdown2html diff --git a/.mutt/markdown2html b/.mutt/markdown2html index e0a2b19..8930c88 100755 --- a/.mutt/markdown2html +++ b/.mutt/markdown2html @@ -116,6 +116,12 @@ SIGNATURE_HTML = \ '
-- {sig}
' +def _preprocess_signature(sig): + ''' + Preprocess the signature before markdown processing. + ''' + return sig + def _preprocess_markdown(mdwn): ''' Preprocess Markdown for handling by the converter. @@ -133,6 +139,13 @@ def _preprocess_markdown(mdwn): # text-mode HTML2text converters, and so it's left commented for now. #ret = re.sub(r'\n>', r' \n>[>]{.quotechar}', ret, flags=re.MULTILINE) + # With the autolink_bare_uris extension, we do not need to put links into + # angle brackets to have them converted, so let's conserve the brackets + # when used around email addresses. Note that this needs a postprocessing + # hack because the pandoc autolink converted includes the ambersand + # (https://github.com/jgm/pandoc/issues/7398). + ret = re.sub(r'<([^@]+@.+\.[^>]+)>', r'<\g<1> -PANDOC_BUG_7398->', ret) + return ret @@ -277,6 +290,10 @@ def _postprocess_html(html): ''' Postprocess the generated and styled HTML. ''' + + # Preprocessing leaves a sentinel to work around + # https://github.com/jgm/pandoc/issues/7398, and so we need to remove it: + html = html.replace(' -PANDOC_BUG_7398->', '>') return html @@ -300,8 +317,12 @@ def convert_markdown_to_html(mdwn): html = _reformat_quotes(html) if sig: + sig = _preprocess_signature(sig) sig = _preprocess_markdown(sig) - html += SIGNATURE_HTML.format(sig='
'.join(sig.splitlines())) + sig = _convert_with_pandoc(sig, standalone=False, selfcontained=False) + sig = SIGNATURE_HTML.format(sig='
'.join(sig.splitlines())) + eob = html.find('') + html = f'{html[:eob]}{sig}\n{html[eob:]}' html = HTML_DOCUMENT.format(htmlbody=html) html = _apply_styling(html)