o
    x¡·iÐ  ã                   @   sF   d Z ddlmZ ddlmZmZ dgZdd„ Zi ZG dd„ deƒZ	dS )	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,   |   dd¡  dd¡  dd¡  dd¡  d	d
¡S )z<Escape &, <, > as well as single and double quotes for HTML.ú&z&amp;ú<z&lt;ú>z&gt;ú"z&quot;ú'z&#39;)Úreplace)Útext© r   úX/home/ubuntu/.local/lib/python3.10/site-packages/wandb/vendor/pygments/formatters/svg.pyÚescape_html   s   
ür   c                   @   s8   e Zd ZdZdZdgZdgZdd„ Zdd„ Zd	d
„ Z	dS )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 ``&#160;``, 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| fi |¤Ž t|ddƒ| _| dd¡| _| dd¡| _t|ddƒ| _| j 	¡ }| 
d	¡r7|d d
…  	¡ }zt|ƒ}W n   d}Y t|d|ƒ| _t|d|d ƒ| _t|ddƒ| _i | _d S )NÚnowrapFÚ
fontfamilyÚ	monospaceÚfontsizeÚ14pxÚxoffsetr   Úpxéþÿÿÿé   ÚyoffsetÚystepé   Ú	spacehackT)r   Ú__init__r   r   Úgetr   r   r   r   ÚstripÚendswithÚintr   r   r   Ú_stylecache)ÚselfÚoptionsÚfsÚint_fsr   r   r   r   P   s   

zSvgFormatter.__init__c                 C   sH  | j }| j}| js/| jr| d| j ¡ n| d¡ | d¡ | d¡ | d| j| jf ¡ | d||f ¡ |D ]X\}}|  |¡}|rKd| d pLd	}|rQd
pRd	}	t|ƒ}| j	rb| 
¡  dd¡}| d¡}
|
dd… D ]}| || |	 ¡ || j7 }| d||f ¡ qm| ||
d  |	 ¡ q:| d¡ | js¢| d¡ dS dS )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&#160;Ú
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%   ÚtokensourceÚoutfileÚxÚyÚttypeÚvalueÚstyleÚtspanÚtspanendÚpartsÚpartr   r   r   Úformat_unencodeda   sB   ÿ



ÿ


ÿ
ÿzSvgFormatter.format_unencodedc                 C   sŒ   || j v r
| j | S |}| j |¡s|j}| j |¡r| j |¡}d}|d r/d|d  d }|d r7|d7 }|d r?|d7 }|| j |< |S )	Nr)   Úcolorz fill="#r	   Úboldz font-weight="bold"Úitalicz font-style="italic")r$   r8   Ústyles_tokenÚparentÚstyle_for_token)r%   Ú	tokentypeÚ
otokentyper7   Úresultr   r   r   r/   Š   s    

ÿ
zSvgFormatter._get_styleN)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameÚaliasesÚ	filenamesr   r=   r/   r   r   r   r   r      s    .)N)
rJ   Úpygments.formatterr   Úpygments.utilr   r   Ú__all__r   Úclass2styler   r   r   r   r   Ú<module>   s   
	