
Screenshot of the terminal output.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Color Table
~~~~~~~~~~~
Display a table of available console text formatting options (colors etc.)
using the escape character and `ANSI escape codes`_.
.. _ANSI escape codes: http://en.wikipedia.org/wiki/ANSI_escape_code
:Copyright: 2002-2008 Jochen Kupperschmidt
:Date: 18-Jun-2008
:License: MIT
"""
COLORS = ('black', 'red', 'green', 'yellow',
'blue', 'magenta', 'cyan', 'white')
STYLES = (('foregr.', 30), ('backgr.', 40),
('bold', 1), ('faint', 2), ('italic',3 ),
('underl.', 4), ('blink', 5), ('reverse', 7))
COLUMN_SPACE = ' | '
ESC = '\033[%sm'
CELL_FORMAT = ESC + '%-7s' + (ESC % 0) # 0 resets
def gen_column(value):
"""Generate a column with all color names, but the same style."""
for index, color in enumerate(COLORS):
if value >= 30:
style = '%d' % (index + value)
else:
style = '%d;%d' % (30 + index, value)
yield CELL_FORMAT % (style, color)
def build_table():
"""Generate table head and body rows."""
# titles
yield (('%-7s' % style[0]) for style in STYLES)
# separators
yield ['-' * 7] * len(STYLES)
# rows
for row in zip(*(gen_column(style[1]) for style in STYLES)):
yield row
if __name__ == '__main__':
# print table
print
print '\n'.join(map(COLUMN_SPACE.join, build_table()))
print