summaryrefslogtreecommitdiff
path: root/pygments/style.py
diff options
context:
space:
mode:
Diffstat (limited to 'pygments/style.py')
-rw-r--r--pygments/style.py50
1 files changed, 45 insertions, 5 deletions
diff --git a/pygments/style.py b/pygments/style.py
index 7a272b53..bc318354 100644
--- a/pygments/style.py
+++ b/pygments/style.py
@@ -11,11 +11,31 @@
from pygments.token import Token, STANDARD_TYPES
from pygments.util import add_metaclass
-from pygments.console import codes
-ansilist = ['#ansi'+x for x in codes.keys() if x]
+_ansimap = {
+ ##
+ '#ansiblack': '000000',
+ '#ansidarkred': '7f0000',
+ '#ansidarkgreen': '007f00',
+ '#ansibrown': '7f7fe0',
+ '#ansidarkblue': '00007f',
+ '#ansipurple': '7f007f',
+ '#ansiteal': '007f7f',
+ '#ansilightgray': 'e5e5e5',
+ ### normal
+ '#ansidarkgray': '555555',
+ '#ansired': 'ff0000',
+ '#ansigreen': '00ff00',
+ '#ansiyellow': 'ffff00',
+ '#ansiblue': '0000ff',
+ '#ansifuchsia': 'ff00ff',
+ '#ansiturquoise': '00ffff',
+ '#ansiwhite': 'ffffff',
+ }
+ansilist = list(_ansimap.keys())
+
class StyleMeta(type):
def __new__(mcs, name, bases, dct):
@@ -35,7 +55,13 @@ class StyleMeta(type):
return col[0]*2 + col[1]*2 + col[2]*2
elif text == '':
return ''
- assert False, "wrong color format %r" % text
+ didyoumean = ''
+ if 'ansi' in text:
+ import difflib
+ possibility = difflib.get_close_matches(text, ansilist, 1)
+ if possibility:
+ didyoumean = '. Did you mean {} ?'.format(possibility[0])
+ assert False, "wrong color format %r%s" % (text, didyoumean)
_styles = obj._styles = {}
@@ -84,16 +110,30 @@ class StyleMeta(type):
def style_for_token(cls, token):
t = cls._styles[token]
+ ansicolor = None
+ color = t[0]
+ if color.startswith('#ansi'):
+ ansicolor = color
+ color = _ansimap[color]
+ bgansicolor = None
+ bgcolor = t[4]
+ if bgcolor.startswith('#ansi'):
+ bgansicolor = bgcolor
+ bgcolor = _ansimap[bgcolor]
+
return {
- 'color': t[0] or None,
+ 'color': color or None,
'bold': bool(t[1]),
'italic': bool(t[2]),
'underline': bool(t[3]),
- 'bgcolor': t[4] or None,
+ 'bgcolor': bgcolor or None,
'border': t[5] or None,
'roman': bool(t[6]) or None,
'sans': bool(t[7]) or None,
'mono': bool(t[8]) or None,
+ 'ansicolor': ansicolor,
+ 'bgansicolor': bgansicolor,
+
}
def list_styles(cls):