Spaces:
Sleeping
Sleeping
""" | |
pygments.formatter | |
~~~~~~~~~~~~~~~~~~ | |
Base formatter class. | |
:copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS. | |
:license: BSD, see LICENSE for details. | |
""" | |
import codecs | |
from pip._vendor.pygments.util import get_bool_opt | |
from pip._vendor.pygments.styles import get_style_by_name | |
__all__ = ['Formatter'] | |
def _lookup_style(style): | |
if isinstance(style, str): | |
return get_style_by_name(style) | |
return style | |
class Formatter: | |
""" | |
Converts a token stream to text. | |
Options accepted: | |
``style`` | |
The style to use, can be a string or a Style subclass | |
(default: "default"). Not used by e.g. the | |
TerminalFormatter. | |
``full`` | |
Tells the formatter to output a "full" document, i.e. | |
a complete self-contained document. This doesn't have | |
any effect for some formatters (default: false). | |
``title`` | |
If ``full`` is true, the title that should be used to | |
caption the document (default: ''). | |
``encoding`` | |
If given, must be an encoding name. This will be used to | |
convert the Unicode token strings to byte strings in the | |
output. If it is "" or None, Unicode strings will be written | |
to the output file, which most file-like objects do not | |
support (default: None). | |
``outencoding`` | |
Overrides ``encoding`` if given. | |
""" | |
#: Name of the formatter | |
name = None | |
#: Shortcuts for the formatter | |
aliases = [] | |
#: fn match rules | |
filenames = [] | |
#: If True, this formatter outputs Unicode strings when no encoding | |
#: option is given. | |
unicodeoutput = True | |
def __init__(self, **options): | |
self.style = _lookup_style(options.get('style', 'default')) | |
self.full = get_bool_opt(options, 'full', False) | |
self.title = options.get('title', '') | |
self.encoding = options.get('encoding', None) or None | |
if self.encoding in ('guess', 'chardet'): | |
# can happen for e.g. pygmentize -O encoding=guess | |
self.encoding = 'utf-8' | |
self.encoding = options.get('outencoding') or self.encoding | |
self.options = options | |
def get_style_defs(self, arg=''): | |
""" | |
Return the style definitions for the current style as a string. | |
``arg`` is an additional argument whose meaning depends on the | |
formatter used. Note that ``arg`` can also be a list or tuple | |
for some formatters like the html formatter. | |
""" | |
return '' | |
def format(self, tokensource, outfile): | |
""" | |
Format ``tokensource``, an iterable of ``(tokentype, tokenstring)`` | |
tuples and write it into ``outfile``. | |
""" | |
if self.encoding: | |
# wrap the outfile in a StreamWriter | |
outfile = codecs.lookup(self.encoding)[3](outfile) | |
return self.format_unencoded(tokensource, outfile) | |