buildframework/helium/external/python/lib/common/Sphinx-0.5.1-py2.5.egg/sphinx/util/console.py
changeset 179 d8ac696cc51f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/external/python/lib/common/Sphinx-0.5.1-py2.5.egg/sphinx/util/console.py	Wed Dec 23 19:29:07 2009 +0200
@@ -0,0 +1,92 @@
+# -*- coding: utf-8 -*-
+"""
+    sphinx.util.console
+    ~~~~~~~~~~~~~~~~~~~
+
+    Format colored console output.
+
+    :copyright: 2007-2008 by Georg Brandl.
+    :license: BSD.
+"""
+
+import os
+
+codes = {}
+
+def get_terminal_width():
+    """Borrowed from the py lib."""
+    try:
+        import os, termios, fcntl, struct
+        call = fcntl.ioctl(0, termios.TIOCGWINSZ, "\000"*8)
+        height, width = struct.unpack("hhhh", call)[:2]
+        terminal_width = width
+    except (SystemExit, KeyboardInterrupt):
+        raise
+    except:
+        # FALLBACK
+        terminal_width = int(os.environ.get('COLUMNS', 80))-1
+    return terminal_width
+
+_tw = get_terminal_width()
+
+def print_and_backspace(text, func):
+    if not codes:
+        # if no coloring, don't output fancy backspaces
+        func(text)
+    else:
+        func(text.ljust(_tw) + _tw * "\b")
+
+def color_terminal():
+    if 'COLORTERM' in os.environ:
+        return True
+    term = os.environ.get('TERM', 'dumb').lower()
+    if 'xterm' in term or 'color' in term:
+        return True
+    return False
+
+
+def nocolor():
+    codes.clear()
+
+def coloron():
+    codes.update(_orig_codes)
+
+def colorize(name, text):
+    return codes.get(name, '') + text + codes.get('reset', '')
+
+def create_color_func(name):
+    def inner(text):
+        return colorize(name, text)
+    globals()[name] = inner
+
+_attrs = {
+    'reset':     '39;49;00m',
+    'bold':      '01m',
+    'faint':     '02m',
+    'standout':  '03m',
+    'underline': '04m',
+    'blink':     '05m',
+}
+
+for _name, _value in _attrs.items():
+    codes[_name] = '\x1b[' + _value
+
+_colors = [
+    ('black',     'darkgray'),
+    ('darkred',   'red'),
+    ('darkgreen', 'green'),
+    ('brown',     'yellow'),
+    ('darkblue',  'blue'),
+    ('purple',    'fuchsia'),
+    ('turquoise', 'teal'),
+    ('lightgray', 'white'),
+]
+
+for i, (dark, light) in enumerate(_colors):
+    codes[dark] = '\x1b[%im' % (i+30)
+    codes[light] = '\x1b[%i;01m' % (i+30)
+
+_orig_codes = codes.copy()
+
+for _name in codes:
+    create_color_func(_name)