File: //usr/lib/python3/dist-packages/pip/_vendor/pygments/formatters/__pycache__/svg.cpython-310.pyc
o
@%Ne� � @ sR d Z ddlmZ ddlmZ ddlmZmZ dgZdd� Z i Z
G dd� de�Zd S )
z�
pygments.formatters.svg
~~~~~~~~~~~~~~~~~~~~~~~
Formatter for SVG output.
:copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS.
:license: BSD, see LICENSE for details.
� )� Formatter)�Comment)�get_bool_opt�get_int_opt�SvgFormatterc C s, | � dd�� dd�� dd�� dd�� d d
�S )z<Escape &, <, > as well as single and double quotes for HTML.�&z&�<z<�>z>�"z"�'z')�replace)�text� r �E/usr/lib/python3/dist-packages/pip/_vendor/pygments/formatters/svg.py�escape_html s
�r c @ s8 e Zd ZdZdZdgZdgZdd� Zdd� Zd d
� Z dS )r a&
Format tokens as an SVG graphics file. This formatter is still experimental.
Each line of code is a ``<text>`` element with explicit ``x`` and ``y``
coordinates containing ``<tspan>`` elements with the individual token styles.
By default, this formatter outputs a full SVG document including doctype
declaration and the ``<svg>`` root element.
.. versionadded:: 0.9
Additional options accepted:
`nowrap`
Don't wrap the SVG ``<text>`` elements in ``<svg><g>`` elements and
don't add a XML declaration and a doctype. If true, the `fontfamily`
and `fontsize` options are ignored. Defaults to ``False``.
`fontfamily`
The value to give the wrapping ``<g>`` element's ``font-family``
attribute, defaults to ``"monospace"``.
`fontsize`
The value to give the wrapping ``<g>`` element's ``font-size``
attribute, defaults to ``"14px"``.
`linenos`
If ``True``, add line numbers (default: ``False``).
`linenostart`
The line number for the first line (default: ``1``).
`linenostep`
If set to a number n > 1, only every nth line number is printed.
`linenowidth`
Maximum width devoted to line numbers (default: ``3*ystep``, sufficient
for up to 4-digit line numbers. Increase width for longer code blocks).
`xoffset`
Starting offset in X direction, defaults to ``0``.
`yoffset`
Starting offset in Y direction, defaults to the font size if it is given
in pixels, or ``20`` else. (This is necessary since text coordinates
refer to the text baseline, not the top edge.)
`ystep`
Offset to add to the Y coordinate for each subsequent line. This should
roughly be the text size plus 5. It defaults to that value if the text
size is given in pixels, or ``25`` else.
`spacehack`
Convert spaces in the source to `` ``, which are non-breaking
spaces. SVG provides the ``xml:space`` attribute to control how
whitespace inside tags is handled, in theory, the ``preserve`` value
could be used to keep all whitespace as-is. However, many current SVG
viewers don't obey that rule, so this option is provided as a workaround
and defaults to ``True``.
�SVG�svgz*.svgc K s� t j| fi |�� t|dd�| _|�dd�| _|�dd�| _t|dd�| _| j� � }|�
d �r7|d d
� � � }zt|�}W n d}Y t|d|�| _t|d
|d �| _
t|dd�| _t|dd�| _t|dd�| _t|dd�| _t|dd| j
�| _i | _d S )N�nowrapF�
fontfamily� monospace�fontsize�14px�xoffsetr �px���� �yoffset�ystep� � spacehackT�linenos�linenostart� �
linenostep�linenowidth� )r �__init__r r �getr r r r �strip�endswith�intr r r r r! r# r$ �_stylecache)�self�options�fs�int_fsr r r r&