X-Git-Url: https://git.madduck.net/etc/mutt.git/blobdiff_plain/7013dfe93a05082153f79eca6c9e5c05b54d9d50..217ca153fe8a1cc6d92fbe549fff1d9bd5aaa35a:/.config/mutt/markdown2html
diff --git a/.config/mutt/markdown2html b/.config/mutt/markdown2html
index 309c22e..3762d5f 100755
--- a/.config/mutt/markdown2html
+++ b/.config/mutt/markdown2html
@@ -51,6 +51,7 @@ DEFAULT_CSS += '''
.block {
padding: 0 0.5em;
margin: 0;
+ font-style: italic;
border-left: 2px solid #eee;
}
.quote, blockquote {
@@ -104,14 +105,17 @@ if os.path.exists(STYLESHEET):
DEFAULT_CSS += open(STYLESHEET).read()
SIGNATURE_HTML = \
- '
-- {sig}
'
+"""
+--
+{sig}
+"""
def _preprocess_signature(sig):
'''
Preprocess the signature before markdown processing.
'''
- return sig
+ return f"```\n{sig}\n```"
def _preprocess_markdown(mdwn):
'''
@@ -135,8 +139,7 @@ def _preprocess_markdown(mdwn):
# 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)
-
+ ret = re.sub(r'<([^@]+@\S+)>', r'<\g<1> PANDOC_BUG_7398 >', ret)
return ret
@@ -218,53 +221,54 @@ def _reformat_quotes(html):
def _convert_with_pandoc(mdwn, inputfmt='markdown', outputfmt='html5',
ext_enabled=None, ext_disabled=None,
- standalone=True, selfcontained=True, title=None):
+ standalone=True, selfcontained=True, title='Untitled'):
'''
Invoke pandoc to do the actual conversion of Markdown to HTML5.
'''
if not ext_enabled:
ext_enabled = [ 'backtick_code_blocks',
- 'line_blocks',
- 'fancy_lists',
- 'startnum',
- 'definition_lists',
- 'example_lists',
- 'table_captions',
- 'simple_tables',
- 'multiline_tables',
- 'grid_tables',
- 'pipe_tables',
- 'all_symbols_escapable',
- 'intraword_underscores',
- 'strikeout',
- 'superscript',
- 'subscript',
- 'fenced_divs',
- 'bracketed_spans',
- 'footnotes',
- 'inline_notes',
- 'emoji',
- 'tex_math_double_backslash',
- 'autolink_bare_uris'
- ]
+ 'line_blocks',
+ 'fancy_lists',
+ 'startnum',
+ 'definition_lists',
+ 'example_lists',
+ 'table_captions',
+ 'simple_tables',
+ 'multiline_tables',
+ 'grid_tables',
+ 'pipe_tables',
+ 'all_symbols_escapable',
+ 'intraword_underscores',
+ 'strikeout',
+ 'superscript',
+ 'subscript',
+ 'fenced_divs',
+ 'bracketed_spans',
+ 'footnotes',
+ 'inline_notes',
+ 'emoji',
+ 'tex_math_double_backslash',
+ 'autolink_bare_uris'
+ ]
if not ext_disabled:
ext_disabled = [ 'tex_math_single_backslash',
'tex_math_dollars',
'smart',
- 'raw_html'
+ 'raw_html',
+ 'yaml_metadata_block'
]
enabled = '+'.join(ext_enabled)
disabled = '-'.join(ext_disabled)
inputfmt = f'{inputfmt}+{enabled}-{disabled}'
- args = []
+ args = ['--metadata=document-css:false']
if standalone:
args.append('--standalone')
if selfcontained:
args.append('--self-contained')
if title:
- args.append(f'--metadata=pagetitle:"{title}"')
+ args.append(f'--metadata=title:{title}')
return pypandoc.convert_text(mdwn, format=inputfmt, to=outputfmt,
extra_args=args)
@@ -284,7 +288,7 @@ def _postprocess_html(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->', '>')
+ html = html.replace(' PANDOC_BUG_7398 ', '')
return html
@@ -293,7 +297,7 @@ def convert_markdown_to_html(mdwn):
Converts the input Markdown to HTML, handling separately the body, as well
as an optional signature.
'''
- parts = re.split(r'^-- $', mdwn, 1, flags=re.MULTILINE)
+ parts = re.split(r'^-- \n', mdwn, 1, flags=re.MULTILINE)
body = parts[0]
if len(parts) == 2:
sig = parts[1]
@@ -306,14 +310,14 @@ def convert_markdown_to_html(mdwn):
body = _identify_quotes_for_later(body)
html = _convert_with_pandoc(body, standalone=True, selfcontained=True,
title=None)
- html = html.replace('Untitled\n','')
html = _reformat_quotes(html)
if sig:
sig = _preprocess_signature(sig)
sig = _preprocess_markdown(sig)
- sig = _convert_with_pandoc(sig, standalone=False, selfcontained=False)
- sig = SIGNATURE_HTML.format(sig='
'.join(sig.splitlines()))
+ sig = _convert_with_pandoc(sig, standalone=False, selfcontained=False,
+ title=None)
+ sig = SIGNATURE_HTML.format(sig=sig)
eob = html.find('