38 lines
1.2 KiB
Python
38 lines
1.2 KiB
Python
# Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
import sys
|
|
try:
|
|
import pygments
|
|
from pygments.lexers import CppLexer
|
|
from pygments.formatters import HtmlFormatter
|
|
PYGMENTS_IMPORTED = True
|
|
except ImportError:
|
|
print('It appears that Pygments is not installed. '
|
|
'Can be installed using easy_install Pygments or from http://pygments.org.')
|
|
PYGMENTS_IMPORTED = False
|
|
|
|
class PygmentsHighlighter(object):
|
|
def __init__(self):
|
|
if not PYGMENTS_IMPORTED:
|
|
raise ImportError('Pygments not installed')
|
|
|
|
"""Highlighter that uses the python pygments library to highlight code.
|
|
"""
|
|
def GetCSS(self, style):
|
|
formatter = HtmlFormatter(linenos=True,
|
|
style=pygments.styles.get_style_by_name(style))
|
|
return formatter.get_style_defs('.highlight')
|
|
|
|
def GetCodeElement(self, code, style):
|
|
formatter = HtmlFormatter(linenos=True,
|
|
style=pygments.styles.get_style_by_name(style))
|
|
return pygments.highlight(code, CppLexer(), formatter)
|
|
|
|
def DisplayName(self):
|
|
return 'pygments' + ('' if PYGMENTS_IMPORTED else ' (not installed)')
|
|
|
|
def GetStyles(self):
|
|
return list(pygments.styles.get_all_styles())
|