123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- """
- Pygments
- ~~~~~~~~
- Pygments is a syntax highlighting package written in Python.
- It is a generic syntax highlighter for general use in all kinds of software
- such as forum systems, wikis or other applications that need to prettify
- source code. Highlights are:
- * a wide range of common languages and markup formats is supported
- * special attention is paid to details, increasing quality by a fair amount
- * support for new languages and formats are added easily
- * a number of output formats, presently HTML, LaTeX, RTF, SVG, all image
- formats that PIL supports, and ANSI sequences
- * it is usable as a command-line tool and as a library
- * ... and it highlights even Brainfuck!
- The `Pygments master branch`_ is installable with ``easy_install Pygments==dev``.
- .. _Pygments master branch:
- https://github.com/pygments/pygments/archive/master.zip#egg=Pygments-dev
- :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
- :license: BSD, see LICENSE for details.
- """
- import sys
- from io import StringIO, BytesIO
- __version__ = '2.9.0'
- __docformat__ = 'restructuredtext'
- __all__ = ['lex', 'format', 'highlight']
- def lex(code, lexer):
- """
- Lex ``code`` with ``lexer`` and return an iterable of tokens.
- """
- try:
- return lexer.get_tokens(code)
- except TypeError as err:
- if (isinstance(err.args[0], str) and
- ('unbound method get_tokens' in err.args[0] or
- 'missing 1 required positional argument' in err.args[0])):
- raise TypeError('lex() argument must be a lexer instance, '
- 'not a class')
- raise
- def format(tokens, formatter, outfile=None): # pylint: disable=redefined-builtin
- """
- Format a tokenlist ``tokens`` with the formatter ``formatter``.
- If ``outfile`` is given and a valid file object (an object
- with a ``write`` method), the result will be written to it, otherwise
- it is returned as a string.
- """
- try:
- if not outfile:
- realoutfile = getattr(formatter, 'encoding', None) and BytesIO() or StringIO()
- formatter.format(tokens, realoutfile)
- return realoutfile.getvalue()
- else:
- formatter.format(tokens, outfile)
- except TypeError as err:
- if (isinstance(err.args[0], str) and
- ('unbound method format' in err.args[0] or
- 'missing 1 required positional argument' in err.args[0])):
- raise TypeError('format() argument must be a formatter instance, '
- 'not a class')
- raise
- def highlight(code, lexer, formatter, outfile=None):
- """
- Lex ``code`` with ``lexer`` and format it with the formatter ``formatter``.
- If ``outfile`` is given and a valid file object (an object
- with a ``write`` method), the result will be written to it, otherwise
- it is returned as a string.
- """
- return format(lex(code, lexer), formatter, outfile)
|