Spaces:
Sleeping
Sleeping
whisper-large-v3
/
venv
/lib
/python3.10
/site-packages
/pip
/_vendor
/pygments
/formatters
/bbcode.py
""" | |
pygments.formatters.bbcode | |
~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
BBcode formatter. | |
:copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS. | |
:license: BSD, see LICENSE for details. | |
""" | |
from pip._vendor.pygments.formatter import Formatter | |
from pip._vendor.pygments.util import get_bool_opt | |
__all__ = ['BBCodeFormatter'] | |
class BBCodeFormatter(Formatter): | |
""" | |
Format tokens with BBcodes. These formatting codes are used by many | |
bulletin boards, so you can highlight your sourcecode with pygments before | |
posting it there. | |
This formatter has no support for background colors and borders, as there | |
are no common BBcode tags for that. | |
Some board systems (e.g. phpBB) don't support colors in their [code] tag, | |
so you can't use the highlighting together with that tag. | |
Text in a [code] tag usually is shown with a monospace font (which this | |
formatter can do with the ``monofont`` option) and no spaces (which you | |
need for indentation) are removed. | |
Additional options accepted: | |
`style` | |
The style to use, can be a string or a Style subclass (default: | |
``'default'``). | |
`codetag` | |
If set to true, put the output into ``[code]`` tags (default: | |
``false``) | |
`monofont` | |
If set to true, add a tag to show the code with a monospace font | |
(default: ``false``). | |
""" | |
name = 'BBCode' | |
aliases = ['bbcode', 'bb'] | |
filenames = [] | |
def __init__(self, **options): | |
Formatter.__init__(self, **options) | |
self._code = get_bool_opt(options, 'codetag', False) | |
self._mono = get_bool_opt(options, 'monofont', False) | |
self.styles = {} | |
self._make_styles() | |
def _make_styles(self): | |
for ttype, ndef in self.style: | |
start = end = '' | |
if ndef['color']: | |
start += '[color=#%s]' % ndef['color'] | |
end = '[/color]' + end | |
if ndef['bold']: | |
start += '[b]' | |
end = '[/b]' + end | |
if ndef['italic']: | |
start += '[i]' | |
end = '[/i]' + end | |
if ndef['underline']: | |
start += '[u]' | |
end = '[/u]' + end | |
# there are no common BBcodes for background-color and border | |
self.styles[ttype] = start, end | |
def format_unencoded(self, tokensource, outfile): | |
if self._code: | |
outfile.write('[code]') | |
if self._mono: | |
outfile.write('[font=monospace]') | |
lastval = '' | |
lasttype = None | |
for ttype, value in tokensource: | |
while ttype not in self.styles: | |
ttype = ttype.parent | |
if ttype == lasttype: | |
lastval += value | |
else: | |
if lastval: | |
start, end = self.styles[lasttype] | |
outfile.write(''.join((start, lastval, end))) | |
lastval = value | |
lasttype = ttype | |
if lastval: | |
start, end = self.styles[lasttype] | |
outfile.write(''.join((start, lastval, end))) | |
if self._mono: | |
outfile.write('[/font]') | |
if self._code: | |
outfile.write('[/code]') | |
if self._code or self._mono: | |
outfile.write('\n') | |