Viewing file: pangomarkup.py (2.17 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
""" pygments.formatters.pangomarkup ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Formatter for Pango markup output.
:copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. """
from pip._vendor.pygments.formatter import Formatter
__all__ = ['PangoMarkupFormatter']
_escape_table = { ord('&'): '&', ord('<'): '<', }
def escape_special_chars(text, table=_escape_table): """Escape & and < for Pango Markup.""" return text.translate(table)
class PangoMarkupFormatter(Formatter): """ Format tokens as Pango Markup code. It can then be rendered to an SVG.
.. versionadded:: 2.9 """
name = 'Pango Markup' aliases = ['pango', 'pangomarkup'] filenames = []
def __init__(self, **options): Formatter.__init__(self, **options)
self.styles = {}
for token, style in self.style: start = '' end = '' if style['color']: start += '<span fgcolor="#{}">'.format(style['color']) end = '</span>' + end if style['bold']: start += '<b>' end = '</b>' + end if style['italic']: start += '<i>' end = '</i>' + end if style['underline']: start += '<u>' end = '</u>' + end self.styles[token] = (start, end)
def format_unencoded(self, tokensource, outfile): lastval = '' lasttype = None
outfile.write('<tt>')
for ttype, value in tokensource: while ttype not in self.styles: ttype = ttype.parent if ttype == lasttype: lastval += escape_special_chars(value) else: if lastval: stylebegin, styleend = self.styles[lasttype] outfile.write(stylebegin + lastval + styleend) lastval = escape_special_chars(value) lasttype = ttype
if lastval: stylebegin, styleend = self.styles[lasttype] outfile.write(stylebegin + lastval + styleend)
outfile.write('</tt>')
|