�
|�e� � �V � d Z ddlmZ ddlmZ ddlmZmZ dgZd� Z i Z
G d� de� Zy) z�
pygments.formatters.svg
~~~~~~~~~~~~~~~~~~~~~~~
Formatter for SVG output.
:copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS.
:license: BSD, see LICENSE for details.
� )� Formatter)�Comment)�get_bool_opt�get_int_opt�SvgFormatterc � � | j dd� j dd� j dd� j dd� j d d
� S )z<Escape &, <, > as well as single and double quotes for HTML.�&z&�<z<�>z>�"z"�'z')�replace)�texts �9/usr/lib/python3/dist-packages/pygments/formatters/svg.py�escape_htmlr sE � ��<�<��W�%����V�$����V�$����X�&����W�%� &� c �2 � e Zd ZdZdZdgZdgZd� Zd� Zd� Z y) 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 � � t j | fi |�� t |dd� | _ |j dd� | _ |j dd� | _ t |dd� | _ | j j � }|j d � r|d d
j � } t |� }t |d|� | _ t |d
|dz � | _
t |dd� | _ t |dd� | _ t |dd� | _ t |dd� | _ t |dd| j z � | _ i | _ y # d}Y ��xY w)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' |