dotfiles/.config/mail/format.py

42 lines
1 KiB
Python
Executable file

#!/bin/env python
# Simple text-wrapping script for email.
# Preserves code blocks, quotes, and signature.
# Automatically joins and re-wraps paragraphs to
# ensure even spacing & avoid ugly wrapping.
# Author: Daniel Fichtinger
# License: MIT
import textwrap
import sys
import re
paragraph = []
skipping = False
def flush_paragraph():
if paragraph:
joined = " ".join(paragraph)
wrapped = textwrap.wrap(joined, width=74, break_long_words=False, replace_whitespace=True)
print("\n".join(wrapped))
paragraph.clear()
for line in sys.stdin:
line = line.rstrip()
if line.startswith("```"):
flush_paragraph()
skipping = not skipping
print(line)
elif line.startswith("--"):
flush_paragraph()
skipping = True
print(line)
elif not line or re.match(r"^(\s+|-\s+|\+\s+|\*\s+|>\s*)", line):
flush_paragraph()
print(line)
elif skipping:
print(line)
else:
paragraph.append(line)
else:
flush_paragraph()