49 lines
1.3 KiB
Python
Executable file
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)
|