File: //lib/python3/dist-packages/pygments/formatters/__pycache__/svg.cpython-38.pyc
U
`a�[� � @ sF d Z ddlmZ ddlmZmZ dgZdd� Zi ZG dd� de�Z dS ) z�
pygments.formatters.svg
~~~~~~~~~~~~~~~~~~~~~~~
Formatter for SVG output.
:copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
:license: BSD, see LICENSE for details.
� )� Formatter)�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
�9/usr/lib/python3/dist-packages/pygments/formatters/svg.py�escape_html s � � � �r c @ s8 e Zd ZdZdZdgZdgZdd� Zdd� Zd d
� Z dS )r ak
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"``.
`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``.
ZSVGZsvgz*.svgc K s� t j| f|� t|dd�| _|�dd�| _|�dd�| _t|dd�| _| j� � }|�
d �rj|d d
� � � }zt|�}W n d}Y nX t|d|�| _t|d
|d �| _
t|dd�| _i | _d S )N�nowrapF�
fontfamilyZ monospace�fontsizeZ14px�xoffsetr Zpx���� �yoffset�ystep� � spacehackT)r �__init__r r �getr r r r �strip�endswith�intr r r �_stylecache)�selfZoptionsZfsZint_fsr
r
r r P s
zSvgFormatter.__init__c C sF | j }| j}| js^| jr*|�d| j � n
|�d� |�d� |�d� |�d| j| jf � |�d||f � |D ]�\}}| �|�}|r�d| d p�d }|r�d
p�d } t|�}| j r�|�
� �dd�}|�d
�}
|
dd� D ]2}|�|| | � || j
7 }|�d||f � q�|�||
d | � qt|�d� | j�sB|�d� dS )z�
Format ``tokensource``, an iterable of ``(tokentype, tokenstring)``
tuples and write it into ``outfile``.
For our implementation we put all lines in their own 'line group'.
z$<?xml version="1.0" encoding="%s"?>
z<?xml version="1.0"?>
zk<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
z)<svg xmlns="http://www.w3.org/2000/svg">
z$<g font-family="%s" font-size="%s">
z)<text x="%s" y="%s" xml:space="preserve">z<tspanr � z</tspan>� z �
N���z1</text>
<text x="%s" y="%s" xml:space="preserve">z</text>z</g></svg>
)r r r �encoding�writer r �
_get_styler r �
expandtabsr �splitr )r ZtokensourceZoutfile�x�yZttype�value�styleZtspanZtspanend�parts�partr
r
r �format_unencodeda s@ �
�
�
zSvgFormatter.format_unencodedc C s� || j kr| j | S |}| j�|�s,|j}q| j�|�}d}|d rTd|d d }|d rd|d7 }|d rt|d7 }|| j |<