本文整理汇总了Python中pygments.lexers.agile.PythonLexer.get_tokens方法的典型用法代码示例。如果您正苦于以下问题:Python PythonLexer.get_tokens方法的具体用法?Python PythonLexer.get_tokens怎么用?Python PythonLexer.get_tokens使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pygments.lexers.agile.PythonLexer
的用法示例。
在下文中一共展示了PythonLexer.get_tokens方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: highlight_code
# 需要导入模块: from pygments.lexers.agile import PythonLexer [as 别名]
# 或者: from pygments.lexers.agile.PythonLexer import get_tokens [as 别名]
def highlight_code(codebox):
lexer = PythonLexer()
cursor = codebox.createTextCursor()
style = styles.get_style_by_name('default')
cursor.gotoStart(False)
for tok_type, tok_value in lexer.get_tokens(codebox.String):
cursor.goRight(len(tok_value), True) # selects the token's text
cursor.CharColor = to_rgbint(style.style_for_token(tok_type)['color'])
cursor.goRight(0, False) # deselects the selected text
示例2: QPygmentsHighlighter
# 需要导入模块: from pygments.lexers.agile import PythonLexer [as 别名]
# 或者: from pygments.lexers.agile.PythonLexer import get_tokens [as 别名]
class QPygmentsHighlighter(QSyntaxHighlighter):
""" Syntax highlighter that uses Pygments for parsing. """
hilighlightingBlock = Signal(unicode, QSyntaxHighlighter)
#---------------------------------------------------------------------------
# 'QSyntaxHighlighter' interface
#---------------------------------------------------------------------------
def __init__(self, parent, lexer=None):
super(QPygmentsHighlighter, self).__init__(parent)
self._document = QtGui.QTextDocument()
self._formatter = HtmlFormatter(nowrap=True)
self._lexer = lexer if lexer else PythonLexer()
self.style = styles.getStyle("Default").pygmentsStyle
self.enabled = True
def setLexerFromFilename(self, filename):
"""
Change the lexer based on the filename (actually only the extension is needed)
:param filename: Filename or extension
"""
try:
self._lexer = get_lexer_for_filename(filename)
except ClassNotFound:
self._lexer = PythonLexer()
def highlightBlock(self, text):
""" Highlight a block of text """
if self.enabled is False:
return
text = unicode(text)
original_text = text
prev_data = self.currentBlock().previous().userData()
if prev_data is not None:
self._lexer._saved_state_stack = prev_data.syntax_stack
elif hasattr(self._lexer, '_saved_state_stack'):
del self._lexer._saved_state_stack
# Lex the text using Pygments
index = 0
for token, text in self._lexer.get_tokens(text):
length = len(text)
self.setFormat(index, length, self._get_format(token))
index += length
if hasattr(self._lexer, '_saved_state_stack'):
data = PygmentsBlockUserData(
syntax_stack=self._lexer._saved_state_stack)
self.currentBlock().setUserData(data)
# Clean up for the next go-round.
del self._lexer._saved_state_stack
#Spaces
expression = QRegExp('\s+')
index = expression.indexIn(original_text, 0)
while index >= 0:
index = expression.pos(0)
length = len(expression.cap(0))
self.setFormat(index, length, self._get_format(Whitespace))
index = expression.indexIn(original_text, index + length)
self.hilighlightingBlock.emit(original_text, self)
# expression = QRegExp('\s+')
# index = expression.indexIn(original_text, 0)
# while index >= 0:
# index = expression.pos(0)
# length = len(expression.cap(0))
# self.setFormat(index, length, self._get_format(Whitespace))
# index = expression.indexIn(original_text, index + length)
#---------------------------------------------------------------------------
# 'PygmentsHighlighter' interface
#---------------------------------------------------------------------------
def __set_style(self, style):
""" Sets the style to the specified Pygments style.
"""
if (isinstance(style, str) or
isinstance(style, unicode)):
style = get_style_by_name(style)
self._style = style
self._clear_caches()
def set_style_sheet(self, stylesheet):
""" Sets a CSS stylesheet. The classes in the stylesheet should
correspond to those generated by:
pygmentize -S <style> -f html
Note that 'set_style' and 'set_style_sheet' completely override each
other, i.e. they cannot be used in conjunction.
"""
self._document.setDefaultStyleSheet(stylesheet)
self._style = None
self._clear_caches()
#.........这里部分代码省略.........