Added ponycenter.py, a simple tool that just centers a pony

This commit is contained in:
jaseg 2013-02-07 16:52:29 +01:00
parent e5a37f52ce
commit a72c728ab4

39
ponycenter.py Executable file
View file

@ -0,0 +1,39 @@
#!/usr/bin/env python3
import os,sys,time, itertools
import argparse
from subprocess import *
try:
import re2 as re
except:
import re
'''
Gets the size of the terminal in (rows, columns)
@return (rows, columns):(int, int) The number or lines and the number of columns in the terminal's display area, [24, 80] if the size cannot be found
'''
def gettermsize():
return [int(x) for x in
next(itertools.chain(
(x for x in
(Popen(['stty', 'size'], stdout=PIPE, stdin=fd, stderr=PIPE).communicate()[0].split()
for fd in [sys.stdin, sys.stdout, sys.stderr])
if x),
[[24, 80]]
)
)
]
parser = argparse.ArgumentParser(description='Center stuff on terminals')
parser.add_argument('string', nargs='*', type=str)
args = parser.parse_args()
for e in [sys.stdin] + args.string:
lines = [e] if isinstance(e, str) else e.readlines()
if lines:
width = max(map(len, map(lambda s: re.sub(r'\x1B\[[0-9;]+m|\$.*\$', '', s), lines)))
pad = int((gettermsize()[1]- width)/2)
for line in lines:
print(' '*pad + re.sub(r'\$.*\$|\n', '', line))