Django

Code

root/django/branches/gis/django/utils/termcolors.py

Revision 4265, 2.1 kB (checked in by adrian, 2 years ago)

Fixed #3191 -- Set 'svn:eol-style native' on the files that didn't have it. Thanks, jjl@pobox.com

  • Property svn:eol-style set to native
Line 
1 """
2 termcolors.py
3 """
4
5 color_names = ('black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white')
6 foreground = dict([(color_names[x], '3%s' % x) for x in range(8)])
7 background = dict([(color_names[x], '4%s' % x) for x in range(8)])
8 del color_names
9
10 RESET = '0'
11 opt_dict = {'bold': '1', 'underscore': '4', 'blink': '5', 'reverse': '7', 'conceal': '8'}
12
13 def colorize(text='', opts=(), **kwargs):
14     """
15     Returns your text, enclosed in ANSI graphics codes.
16
17     Depends on the keyword arguments 'fg' and 'bg', and the contents of
18     the opts tuple/list.
19
20     Returns the RESET code if no parameters are given.
21
22     Valid colors:
23         'black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white'
24
25     Valid options:
26         'bold'
27         'underscore'
28         'blink'
29         'reverse'
30         'conceal'
31         'noreset' - string will not be auto-terminated with the RESET code
32
33     Examples:
34         colorize('hello', fg='red', bg='blue', opts=('blink',))
35         colorize()
36         colorize('goodbye', opts=('underscore',))
37         print colorize('first line', fg='red', opts=('noreset',))
38         print 'this should be red too'
39         print colorize('and so should this')
40         print 'this should not be red'
41     """
42     text = str(text)
43     code_list = []
44     if text == '' and len(opts) == 1 and opts[0] == 'reset':
45         return '\x1b[%sm' % RESET
46     for k, v in kwargs.iteritems():
47         if k == 'fg':
48             code_list.append(foreground[v])
49         elif k == 'bg':
50             code_list.append(background[v])
51     for o in opts:
52         if o in opt_dict:
53             code_list.append(opt_dict[o])
54     if 'noreset' not in opts:
55         text = text + '\x1b[%sm' % RESET
56     return ('\x1b[%sm' % ';'.join(code_list)) + text
57
58 def make_style(opts=(), **kwargs):
59     """
60     Returns a function with default parameters for colorize()
61
62     Example:
63         bold_red = make_style(opts=('bold',), fg='red')
64         print bold_red('hello')
65         KEYWORD = make_style(fg='yellow')
66         COMMENT = make_style(fg='blue', opts=('bold',))
67     """
68     return lambda text: colorize(text, opts, **kwargs)
Note: See TracBrowser for help on using the browser.