dotfiles/.config/mail/format.py

49 lines
1.3 KiB
Python
Executable file

#!/bin/env python
import textwrap
import sys
# first pass: reflow paragraphs
paragraph = []
lines = []
skipping = False
for line in sys.stdin:
line = line.rstrip()
if line:
if line.startswith(">") or skipping:
# ignore quoted line
lines.append(line)
elif line.startswith("```"):
# ignore code block
skipping = not skipping
lines.append(line)
elif line.startswith("--"):
skipping = True
lines.append(line)
else:
paragraph.append(line)
else:
if paragraph:
lines.append(' '.join(paragraph))
paragraph = []
lines.append("\n")
if paragraph:
lines.append(' '.join(paragraph))
skipping = False
for line in lines:
if line.startswith(">"):
# ignore quoted line
print(line)
elif line.startswith("```"):
# ignore code block
skipping = not skipping
print(line)
elif line.startswith("--"):
skipping = True
print(line)
else:
# TODO: fix signature being mangled and newlines erased
if not skipping:
wrapped = textwrap.wrap(line, width=74, break_long_words=False, replace_whitespace=True)
print("\n".join(wrapped))
else:
print(line)