Source code for Hellas.Thebes
"""yet some more code snippets named after the ancient city of `Thebes <https://en.wikipedia.org/wiki/Thebes,_Greece>`_
"""
import re
[docs]def format_header(frmt):
"""creates a header string from a new style format string useful when printing dictionaries
:param str frmt: a new style format string
:returns: a table header string
assumptions for frmt specs:
- all have a separator = '|' and include a key size format directive i.e.: '{key:size}'
- no other character allowed in frmt except separator
:Example:
>>> frmt = '|{count:12,d}|{percent:7.2f}|{depth:5d}|'
>>> data_dict = {'count': 100, 'percent': 10.5, 'depth': 10}
>>> print(format_header(frmt)); print(frmt.format(**data_dict))
............................
| count |percent|depth|
............................
| 100| 10.50| 10|
"""
names = re.sub("{(.*?):.*?}", r"\1", frmt)
names = [i for i in names.split("|") if i]
frmt_clean = re.sub("\.\df", r"", frmt) # get read of floats i.e {:8.2f}
sizes = re.findall(r'\d+', frmt_clean)
frmt_header = "|{{:^{}}}" * len(sizes) + "|"
header_frmt = frmt_header.format(*sizes)
header = header_frmt.format(*names)
header_len = len(header)
header = "{}\n{}\n{}\n".format("." * header_len, header, "." * header_len)
return header.strip()