Added ponycenter.py, a simple tool that just centers a pony
This commit is contained in:
parent
e5a37f52ce
commit
a72c728ab4
1 changed files with 39 additions and 0 deletions
39
ponycenter.py
Executable file
39
ponycenter.py
Executable 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))
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue