dotfiles/.config/mail/format.py

73 lines
2 KiB
Python
Executable file

#!/bin/env python
import textwrap
import sys
# with open(sys.argv[1], 'r') as f:
# lines = f.read().splitlines()
# print(lines)
# first pass: reflow paragraphs
# paragraph = []
# lines = []
# for line in sys.stdin:
# line = line.rstrip()
# if line:
# paragraph.append(line)
# else:
# if paragraph:
# lines.append(' '.join(paragraph))
# lines.append("\n")
# if paragraph:
# lines.append(' '.join(paragraph))
skipping = False
in_par = False
running = True
while running:
line = sys.stdin.readline()
if line == '':
running = False
if line.startswith(">"):
# ignore quoted line
print(line, end = "")
elif line.startswith("```"):
# ignore code block
skipping = not skipping
print(line, end = "")
elif line.startswith("--"):
skipping = True
print(line, end = "")
elif not line.rstrip():
# Empty line
in_par = not in_par
print()
print("printing empty line")
# print(line, end="")
else:
if not skipping and in_par:
par = []
while True:
next_line = sys.stdin.readline()
# if not line.startswith((">", "```", "--")):
stripped = next_line.rstrip()
# print(next_line)
# print("runs")
if stripped:
# print("runs strip")
par.append(stripped)
else:
in_par = False
print("breaking par")
# par.append("\n")
break
line = " ".join(par)
# print(par)
# empty line, treat next section as paragraph
# 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), end="")
else:
print(line, end = "")