ThirdParty/Pygments/pygments/style.py

changeset 5713
6762afd9f963
parent 4697
c2e9bf425554
equal deleted inserted replaced
5712:f0d08bdeacf4 5713:6762afd9f963
3 pygments.style 3 pygments.style
4 ~~~~~~~~~~~~~~ 4 ~~~~~~~~~~~~~~
5 5
6 Basic style object. 6 Basic style object.
7 7
8 :copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS. 8 :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
9 :license: BSD, see LICENSE for details. 9 :license: BSD, see LICENSE for details.
10 """ 10 """
11 11
12 from pygments.token import Token, STANDARD_TYPES 12 from pygments.token import Token, STANDARD_TYPES
13 from pygments.util import add_metaclass 13 from pygments.util import add_metaclass
14
15 # Default mapping of #ansixxx to RGB colors.
16 _ansimap = {
17 # dark
18 '#ansiblack': '000000',
19 '#ansidarkred': '7f0000',
20 '#ansidarkgreen': '007f00',
21 '#ansibrown': '7f7fe0',
22 '#ansidarkblue': '00007f',
23 '#ansipurple': '7f007f',
24 '#ansiteal': '007f7f',
25 '#ansilightgray': 'e5e5e5',
26 # normal
27 '#ansidarkgray': '555555',
28 '#ansired': 'ff0000',
29 '#ansigreen': '00ff00',
30 '#ansiyellow': 'ffff00',
31 '#ansiblue': '0000ff',
32 '#ansifuchsia': 'ff00ff',
33 '#ansiturquoise': '00ffff',
34 '#ansiwhite': 'ffffff',
35 }
36 ansicolors = set(_ansimap)
14 37
15 38
16 class StyleMeta(type): 39 class StyleMeta(type):
17 40
18 def __new__(mcs, name, bases, dct): 41 def __new__(mcs, name, bases, dct):
20 for token in STANDARD_TYPES: 43 for token in STANDARD_TYPES:
21 if token not in obj.styles: 44 if token not in obj.styles:
22 obj.styles[token] = '' 45 obj.styles[token] = ''
23 46
24 def colorformat(text): 47 def colorformat(text):
48 if text in ansicolors:
49 return text
25 if text[0:1] == '#': 50 if text[0:1] == '#':
26 col = text[1:] 51 col = text[1:]
27 if len(col) == 6: 52 if len(col) == 6:
28 return col 53 return col
29 elif len(col) == 3: 54 elif len(col) == 3:
77 102
78 return obj 103 return obj
79 104
80 def style_for_token(cls, token): 105 def style_for_token(cls, token):
81 t = cls._styles[token] 106 t = cls._styles[token]
107 ansicolor = bgansicolor = None
108 color = t[0]
109 if color.startswith('#ansi'):
110 ansicolor = color
111 color = _ansimap[color]
112 bgcolor = t[4]
113 if bgcolor.startswith('#ansi'):
114 bgansicolor = bgcolor
115 bgcolor = _ansimap[bgcolor]
116
82 return { 117 return {
83 'color': t[0] or None, 118 'color': color or None,
84 'bold': bool(t[1]), 119 'bold': bool(t[1]),
85 'italic': bool(t[2]), 120 'italic': bool(t[2]),
86 'underline': bool(t[3]), 121 'underline': bool(t[3]),
87 'bgcolor': t[4] or None, 122 'bgcolor': bgcolor or None,
88 'border': t[5] or None, 123 'border': t[5] or None,
89 'roman': bool(t[6]) or None, 124 'roman': bool(t[6]) or None,
90 'sans': bool(t[7]) or None, 125 'sans': bool(t[7]) or None,
91 'mono': bool(t[8]) or None, 126 'mono': bool(t[8]) or None,
127 'ansicolor': ansicolor,
128 'bgansicolor': bgansicolor,
92 } 129 }
93 130
94 def list_styles(cls): 131 def list_styles(cls):
95 return list(cls) 132 return list(cls)
96 133

eric ide

mercurial