buildframework/helium/external/python/lib/2.5/Sphinx-0.5.1-py2.5.egg/sphinx/highlighting.py
changeset 179 d8ac696cc51f
parent 1 be27ed110b50
child 180 e02a83d4c571
child 592 3215c239276a
--- a/buildframework/helium/external/python/lib/2.5/Sphinx-0.5.1-py2.5.egg/sphinx/highlighting.py	Wed Oct 28 14:39:48 2009 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,195 +0,0 @@
-# -*- coding: utf-8 -*-
-"""
-    sphinx.highlighting
-    ~~~~~~~~~~~~~~~~~~~
-
-    Highlight code blocks using Pygments.
-
-    :copyright: 2007-2008 by Georg Brandl.
-    :license: BSD.
-"""
-
-import sys
-import cgi
-import re
-import parser
-
-from sphinx.util.texescape import tex_hl_escape_map
-
-try:
-    import pygments
-    from pygments import highlight
-    from pygments.lexers import PythonLexer, PythonConsoleLexer, CLexer, \
-         TextLexer, RstLexer
-    from pygments.lexers import get_lexer_by_name, guess_lexer
-    from pygments.formatters import HtmlFormatter, LatexFormatter
-    from pygments.filters import ErrorToken
-    from pygments.style import Style
-    from pygments.styles import get_style_by_name
-    from pygments.styles.friendly import FriendlyStyle
-    from pygments.token import Generic, Comment, Number
-except ImportError:
-    pygments = None
-else:
-    class SphinxStyle(Style):
-        """
-        Like friendly, but a bit darker to enhance contrast on the green
-        background.
-        """
-
-        background_color = '#eeffcc'
-        default_style = ''
-
-        styles = FriendlyStyle.styles
-        styles.update({
-            Generic.Output: '#333',
-            Comment: 'italic #408090',
-            Number: '#208050',
-        })
-
-    lexers = dict(
-        none = TextLexer(),
-        python = PythonLexer(),
-        pycon = PythonConsoleLexer(),
-        # the python3 option exists as of Pygments 0.12, but it doesn't
-        # do any harm in previous versions
-        pycon3 = PythonConsoleLexer(python3=True),
-        rest = RstLexer(),
-        c = CLexer(),
-    )
-    for _lexer in lexers.values():
-        _lexer.add_filter('raiseonerror')
-
-
-escape_hl_chars = {ord(u'@'): u'@PYGZat[]',
-                   ord(u'['): u'@PYGZlb[]',
-                   ord(u']'): u'@PYGZrb[]'}
-
-# used if Pygments is not available
-_LATEX_STYLES = r'''
-\newcommand\PYGZat{@}
-\newcommand\PYGZlb{[}
-\newcommand\PYGZrb{]}
-'''
-
-
-parsing_exceptions = (SyntaxError, UnicodeEncodeError)
-if sys.version_info < (2, 5):
-    # Python <= 2.4 raises MemoryError when parsing an
-    # invalid encoding cookie
-    parsing_exceptions += MemoryError,
-
-
-class PygmentsBridge(object):
-    def __init__(self, dest='html', stylename='sphinx'):
-        self.dest = dest
-        if not pygments:
-            return
-        if stylename == 'sphinx':
-            style = SphinxStyle
-        elif '.' in stylename:
-            module, stylename = stylename.rsplit('.', 1)
-            style = getattr(__import__(module, None, None, ['']), stylename)
-        else:
-            style = get_style_by_name(stylename)
-        self.hfmter = {False: HtmlFormatter(style=style),
-                       True: HtmlFormatter(style=style, linenos=True)}
-        self.lfmter = {False: LatexFormatter(style=style, commandprefix='PYG'),
-                       True: LatexFormatter(style=style, linenos=True,
-                                            commandprefix='PYG')}
-
-    def unhighlighted(self, source):
-        if self.dest == 'html':
-            return '<pre>' + cgi.escape(source) + '</pre>\n'
-        else:
-            # first, escape highlighting characters like Pygments does
-            source = source.translate(escape_hl_chars)
-            # then, escape all characters nonrepresentable in LaTeX
-            source = source.translate(tex_hl_escape_map)
-            return '\\begin{Verbatim}[commandchars=@\\[\\]]\n' + \
-                   source + '\\end{Verbatim}\n'
-
-    def try_parse(self, src):
-        # Make sure it ends in a newline
-        src += '\n'
-
-        # Replace "..." by a mark which is also a valid python expression
-        # (Note, the highlighter gets the original source, this is only done
-        #  to allow "..." in code and still highlight it as Python code.)
-        mark = "__highlighting__ellipsis__"
-        src = src.replace("...", mark)
-
-        # lines beginning with "..." are probably placeholders for suite
-        src = re.sub(r"(?m)^(\s*)" + mark + "(.)", r"\1"+ mark + r"# \2", src)
-
-        # if we're using 2.5, use the with statement
-        if sys.version_info >= (2, 5):
-            src = 'from __future__ import with_statement\n' + src
-
-        if isinstance(src, unicode):
-            # Non-ASCII chars will only occur in string literals
-            # and comments.  If we wanted to give them to the parser
-            # correctly, we'd have to find out the correct source
-            # encoding.  Since it may not even be given in a snippet,
-            # just replace all non-ASCII characters.
-            src = src.encode('ascii', 'replace')
-
-        try:
-            parser.suite(src)
-        except parsing_exceptions:
-            return False
-        else:
-            return True
-
-    def highlight_block(self, source, lang, linenos=False):
-        if not pygments:
-            return self.unhighlighted(source)
-        if lang in ('py', 'python'):
-            if source.startswith('>>>'):
-                # interactive session
-                lexer = lexers['pycon']
-            else:
-                # maybe Python -- try parsing it
-                if self.try_parse(source):
-                    lexer = lexers['python']
-                else:
-                    return self.unhighlighted(source)
-        elif lang in ('python3', 'py3') and source.startswith('>>>'):
-            # for py3, recognize interactive sessions, but do not try parsing...
-            lexer = lexers['pycon3']
-        elif lang == 'guess':
-            try:
-                lexer = guess_lexer(source)
-            except Exception:
-                return self.unhighlighted(source)
-        else:
-            if lang in lexers:
-                lexer = lexers[lang]
-            else:
-                lexer = lexers[lang] = get_lexer_by_name(lang)
-                lexer.add_filter('raiseonerror')
-        try:
-            if self.dest == 'html':
-                return highlight(source, lexer, self.hfmter[bool(linenos)])
-            else:
-                hlsource = highlight(source, lexer, self.lfmter[bool(linenos)])
-                return hlsource.translate(tex_hl_escape_map)
-        except ErrorToken:
-            # this is most probably not the selected language,
-            # so let it pass unhighlighted
-            return self.unhighlighted(source)
-
-    def get_stylesheet(self):
-        if not pygments:
-            if self.dest == 'latex':
-                return _LATEX_STYLES
-            # no HTML styles needed
-            return ''
-        if self.dest == 'html':
-            return self.hfmter[0].get_style_defs()
-        else:
-            styledefs = self.lfmter[0].get_style_defs()
-            # workaround for Pygments < 0.12
-            if styledefs.startswith('\\newcommand\\at{@}'):
-                styledefs += _LATEX_STYLES
-            return styledefs