]>
git.madduck.net Git - etc/mutt.git/blobdiff - .mutt/markdown2html
madduck's git repository
Every one of the projects in this repository is available at the canonical
URL git://git.madduck.net/madduck/pub/<projectpath> — see
each project's metadata for the exact URL.
All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@ git. madduck. net .
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
SSH access, as well as push access can be individually
arranged .
If you use my repositories frequently, consider adding the following
snippet to ~/.gitconfig and using the third clone URL listed for each
project:
[url "git://git.madduck.net/madduck/"]
insteadOf = madduck:
h5 { font-size: 103%; }
h6 { font-size: 100%; }
p { padding: 0 0.5em; }
h5 { font-size: 103%; }
h6 { font-size: 100%; }
p { padding: 0 0.5em; }
'''
STYLESHEET = os.path.join(os.path.expanduser('~/.mutt'),
'''
STYLESHEET = os.path.join(os.path.expanduser('~/.mutt'),
if os.path.exists(STYLESHEET):
DEFAULT_CSS += open(STYLESHEET).read()
if os.path.exists(STYLESHEET):
DEFAULT_CSS += open(STYLESHEET).read()
-HTML_DOCUMENT = '''<!DOCTYPE html>
-<html><head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
-<meta charset="utf-8"/>
-<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"/>
-</head><body class="email">
-{htmlbody}
-</body></html>'''
-
-
SIGNATURE_HTML = \
'<div class="signature"><span class="leader">-- </span>{sig}</div>'
SIGNATURE_HTML = \
'<div class="signature"><span class="leader">-- </span>{sig}</div>'
# The lead-in to a quote is a single line immediately preceding the
# quote, and ending with ':'. Note that there could be multiple of
# these:
# The lead-in to a quote is a single line immediately preceding the
# quote, and ending with ':'. Note that there could be multiple of
# these:
- if re.match(r'^.+ :\s*$', cur) and nxt.startswith('>'):
+ if re.match(r'^[^>]+.* :\s*$', cur) and nxt.startswith('>'):
ret.append(f'{{.quotelead}}{cur.strip()}')
# pandoc needs an empty line before the blockquote, so
# we enter one for the purpose of HTML rendition:
ret.append(f'{{.quotelead}}{cur.strip()}')
# pandoc needs an empty line before the blockquote, so
# we enter one for the purpose of HTML rendition:
# The first blockquote after such a lead-in gets marked as the
# "initial" quote:
# The first blockquote after such a lead-in gets marked as the
# "initial" quote:
- elif prev and re.match(r'^.+ :\s*$', prev) and cur.startswith('>'):
+ elif prev and re.match(r'^[^>]+.* :\s*$', prev) and cur.startswith('>'):
ret.append(re.sub(r'^(\s*>\s*)+(.+)',
r'\g<1>{.quoteinitial}\g<2>',
cur, flags=re.MULTILINE))
# All other occurrences of blockquotes get the "subsequent" marker:
ret.append(re.sub(r'^(\s*>\s*)+(.+)',
r'\g<1>{.quoteinitial}\g<2>',
cur, flags=re.MULTILINE))
# All other occurrences of blockquotes get the "subsequent" marker:
- elif cur.startswith('>') and prev and not prev.startswith('>'):
+ elif cur.startswith('>') and prev is not None and not prev.startswith('>'):
ret.append(re.sub(r'^((?:\s*>\s*)+)(.+)',
r'\g<1>{.quotesubsequent}\g<2>',
cur, flags=re.MULTILINE))
ret.append(re.sub(r'^((?:\s*>\s*)+)(.+)',
r'\g<1>{.quotesubsequent}\g<2>',
cur, flags=re.MULTILINE))
if body:
body = _preprocess_markdown(body)
body = _identify_quotes_for_later(body)
if body:
body = _preprocess_markdown(body)
body = _identify_quotes_for_later(body)
- html = _convert_with_pandoc(body, standalone=True, selfcontained=True)
+ html = _convert_with_pandoc(body, standalone=True, selfcontained=True,
+ title=None)
+ html = html.replace('<title>Untitled</title>\n','')
html = _reformat_quotes(html)
if sig:
html = _reformat_quotes(html)
if sig:
eob = html.find('</body>')
html = f'{html[:eob]}{sig}\n{html[eob:]}'
eob = html.find('</body>')
html = f'{html[:eob]}{sig}\n{html[eob:]}'
- html = HTML_DOCUMENT.format(htmlbody=html)
html = _apply_styling(html)
html = _postprocess_html(html)
html = _apply_styling(html)
html = _postprocess_html(html)