pycolib/ansicolor.py
author Radek Brich <radek.brich@devl.cz>
Wed, 03 Apr 2013 20:37:05 +0200
changeset 1 ee31f1bf17c1
child 2 d3ffa15f5886
permissions -rw-r--r--
Add ansicolor, prettysize, makeurl and README.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
     1
# -*- coding: utf-8 -*-
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
     2
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
     3
(BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, BOLD) = range(0,9)
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
     4
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
     5
names = ['black','red','green','yellow','blue','magenta','cyan','white']
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
     6
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
     7
disabled = False  # set True to disable all colors
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
     8
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
     9
def color(enable, fg=None, bg=None):
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    10
    '''
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    11
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    12
    color(1) -- switch to bold
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    13
    color(1,1) -- red foreground
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    14
    color(1,3,4) -- red on blue
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    15
    color(0) -- reset
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    16
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    17
    '''
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    18
    global disabled
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    19
    if disabled:
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    20
        return ''
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    21
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    22
    if isinstance(fg, str):
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    23
        fg = names.index(fg)
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    24
    if isinstance(bg, str):
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    25
        bg = names.index(bg)
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    26
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    27
    if enable:
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    28
        code = '1'
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    29
        if fg is not None:
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    30
            code = ''
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    31
            if fg >= 8:
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    32
                fg -= 8
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    33
                code += '1;'
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    34
            code += str(30 + fg)
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    35
        if bg is not None:
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    36
            code += ';'
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    37
            if bg >= 8:
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    38
                bg -= 8
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    39
                code += '1;'
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    40
            code += str(40 + bg)
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    41
        return "\033[" + code + "m"
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    42
    else:
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    43
        return "\033[0m"
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    44
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    45
def setcolor(enable, fg=None, bg=None):
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    46
    print(color(enable, fg, bg), end='')
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    47
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    48
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    49
if __name__ == '__main__':
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    50
    for c in range(0,8):
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    51
        print(
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    52
            color(1,c), names[c].ljust(20),
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    53
            color(1,8+c), names[c].ljust(20),
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    54
            color(0), sep='')
ee31f1bf17c1 Add ansicolor, prettysize, makeurl and README.
Radek Brich <radek.brich@devl.cz>
parents:
diff changeset
    55