summaryrefslogtreecommitdiff
path: root/sandbox/py-rest-doc/sphinx/console.py
blob: 2371bea57c52aa24f4dc7dfc96e29bae0d604e13 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# -*- coding: utf-8 -*-
"""
    sphinx.console
    ~~~~~~~~~~~~~~

    Format colored console output.

    :copyright: 1998-2004 by the Gentoo Foundation.
    :copyright: 2006-2007 by Georg Brandl.
    :license: Python license.
"""

esc_seq = "\x1b["

codes = {}
codes["reset"]     = esc_seq + "39;49;00m"

codes["bold"]      = esc_seq + "01m"
codes["faint"]     = esc_seq + "02m"
codes["standout"]  = esc_seq + "03m"
codes["underline"] = esc_seq + "04m"
codes["blink"]     = esc_seq + "05m"
codes["overline"]  = esc_seq + "06m"  # Who made this up? Seriously.

ansi_color_codes = []
for x in xrange(30, 38):
    ansi_color_codes.append("%im" % x)
    ansi_color_codes.append("%i;01m" % x)

rgb_ansi_colors = [
    '0x000000', '0x555555', '0xAA0000', '0xFF5555',
    '0x00AA00', '0x55FF55', '0xAA5500', '0xFFFF55',
    '0x0000AA', '0x5555FF', '0xAA00AA', '0xFF55FF',
    '0x00AAAA', '0x55FFFF', '0xAAAAAA', '0xFFFFFF'
]

for x in xrange(len(rgb_ansi_colors)):
    codes[rgb_ansi_colors[x]] = esc_seq + ansi_color_codes[x]

del x

codes["black"]     = codes["0x000000"]
codes["darkgray"]  = codes["0x555555"]

codes["red"]       = codes["0xFF5555"]
codes["darkred"]   = codes["0xAA0000"]

codes["green"]     = codes["0x55FF55"]
codes["darkgreen"] = codes["0x00AA00"]

codes["yellow"]    = codes["0xFFFF55"]
codes["brown"]     = codes["0xAA5500"]

codes["blue"]      = codes["0x5555FF"]
codes["darkblue"]  = codes["0x0000AA"]

codes["fuchsia"]   = codes["0xFF55FF"]
codes["purple"]    = codes["0xAA00AA"]

codes["teal"]      = codes["0x00AAAA"]
codes["turquoise"] = codes["0x55FFFF"]

codes["white"]     = codes["0xFFFFFF"]
codes["lightgray"] = codes["0xAAAAAA"]

codes["darkteal"]   = codes["turquoise"]
codes["darkyellow"] = codes["brown"]
codes["fuscia"]     = codes["fuchsia"]
codes["white"]      = codes["bold"]

def nocolor():
    "turn off colorization"
    for code in codes:
        codes[code] = ""

def reset_color():
    return codes["reset"]

def colorize(color_key, text):
    return codes[color_key] + text + codes["reset"]

functions_colors = [
    "bold", "white", "teal", "turquoise", "darkteal",
    "fuscia", "fuchsia", "purple", "blue", "darkblue",
    "green", "darkgreen", "yellow", "brown",
    "darkyellow", "red", "darkred"
]

def create_color_func(color_key):
    """
    Return a function that formats its argument in the given color.
    """
    def derived_func(text):
        return colorize(color_key, text)
    return derived_func

ns = locals()
for c in functions_colors:
    ns[c] = create_color_func(c)

del c, ns