Ë
    !täiå  ã                   óV   — d Z ddlmZ ddlmZ ddlmZmZ dgZd„ Z	i Z
 G d„ de«      Zy)	zÏ
    pygments.formatters.svg
    ~~~~~~~~~~~~~~~~~~~~~~~

    Formatter for SVG output.

    :copyright: Copyright 2006-present by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
é    )Ú	Formatter)ÚComment)Úget_bool_optÚget_int_optÚSvgFormatterc                 ó¦   — | j                  dd«      j                  dd«      j                  dd«      j                  dd«      j                  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)Útexts    úf/Volumes/fast/ai/experiments/MLX_z-image/.venv/lib/python3.12/site-packages/pygments/formatters/svg.pyÚescape_htmlr      sE   € à�<‰<˜˜WÓ%ß‘˜˜VÓ$ß‘˜˜VÓ$ß‘˜˜XÓ&ß‘˜˜WÓ%ð	&ó    c                   ó2   — e Zd ZdZdZdgZdgZd„ Zd„ Zd„ 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 ``&#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                 ó´  — t        j                  | fi |¤Ž t        |dd«      | _        |j	                  dd«      | _        |j	                  dd«      | _        t        |dd«      | _        | j                  j                  «       }|j                  d	«      r|d d
 j                  «       }	 t        |«      }t        |d|«      | _        t        |d|dz   «      | _        t        |dd«      | _        t        |dd«      | _        t        |dd«      | _        t        |dd«      | _        t        |dd| j                  z  «      | _        i | _        y # t        $ r d}Y Œ£w xY 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ÚintÚ
ValueErrorr    r!   r#   r$   r%   r'   r(   Ú_stylecache)ÚselfÚoptionsÚfsÚint_fss       r   r*   zSvgFormatter.__init__]   s4  € Ü×Ñ˜4Ñ+ 7Ò+Ü" 7¨H°eÓ<ˆŒØ!Ÿ+™+ l°KÓ@ˆŒØŸ™ J°Ó7ˆŒÜ" 7¨I°qÓ9ˆŒØ�]‰]× Ñ Ó"ˆØ�;‰;�tÔØ�C�R�—‘“ˆBð	Ü˜“WˆFô # 7¨I°vÓ>ˆŒÜ  ¨'°6¸A±:Ó>ˆŒ
Ü% g¨{¸DÓAˆŒÜ# G¨I°eÓ<ˆŒÜ& w¨}¸QÓ?ˆÔÜ% g¨l¸1Ó=ˆŒÜ& w¨}¸aÀÇ
Á
¹lÓKˆÔØˆÕøô ò 	ØŠFð	ús   Â(E	 Å	EÅEc                 óz  — | j                   }| j                  }| j                  s‹| j                  r |j	                  d| j                  › d�«       n|j	                  d«       |j	                  d«       |j	                  d«       |j	                  d| j
                  › d| j                  › d�«       | j                  }| j                  }| j                  t        «      }|}| j                  rT||z  d	k(  r+|j	                  d
|| j                  z   › d|› d|› d|› d�	«       || j                  | j                  z   z  }|dz  }|j	                  d
|› d|› d�«       |D �]0  \  }	}
| j                  |	«      }|xr d|z   dz   xs d}|xr dxs d}t        |
«      }
| j                  r |
j!                  «       j#                  dd«      }
|
j%                  d«      }|dd D ]•  }|j	                  ||z   |z   «       || j                  z  }|j	                  d«       | j                  r3||z  d	k(  r+|j	                  d
|| j                  z   › d|› d|› d|› d�	«       |dz  }|j	                  d
|› d|› d�«       Œ— |j	                  ||d   z   |z   «       �Œ3 |j	                  d«       | j                  s|j	                  d«       yy)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="z"?>
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="z" font-size="z">
r   z	<text x="z" y="z" z text-anchor="end">z</text>r&   z" xml:space="preserve">z<tspanr   Ú z</tspan>Ú z&#160;Ú
Néÿÿÿÿz</text>
z" text-anchor="end" z</g></svg>
)r   r    r   ÚencodingÚwriter   r   r%   r'   Ú
_get_styler   r$   r(   r!   r   r#   Ú
expandtabsr   Úsplit)r1   ÚtokensourceÚoutfileÚxÚyÚcounterÚcounter_stepÚcounter_styleÚline_xÚttypeÚvalueÚstyleÚtspanÚtspanendÚpartsÚparts                   r   Úformat_unencodedzSvgFormatter.format_unencodeds   s±  € ð �L‰LˆØ�L‰LˆØ�{Š{Ø�}Š}Ø—‘Ð >¸t¿}¹}¸oÈUÐSÕTà—‘Ð7Ô8Ø�M‰Mð *ô +ð �M‰MÐFÔGØ�M‰MÐ,¨T¯_©_Ð,=¸]È4Ï=É=È/ÐY]Ð^Ô_à×"Ñ"ˆØ—‘ˆØŸ™¬Ó0ˆØˆà�<Š<Ø˜Ñ%¨Ò*Ø—‘ 	¨!¨D×,<Ñ,<Ñ*<Ð)=¸UÀ1À#ÀRÈÀÐViÐjqÐirÐryÐzÔ{Ø�d×&Ñ&¨¯©Ñ3Ñ3ˆFØ�q‰LˆGà�‰˜	 & ¨¨q¨cÐ1HÐIÔJÜ'‰LˆE�5Ø—O‘O EÓ*ˆEØÒ4˜h¨Ñ.°Ñ4Ò:¸ˆEØÒ+ Ò1¨rˆHÜ Ó&ˆEØ�~Š~Ø×(Ñ(Ó*×2Ñ2°3¸ÓA�Ø—K‘K Ó%ˆEØ˜c˜r›
�Ø—‘˜e d™l¨XÑ5Ô6Ø�T—Z‘Z‘�Ø—‘˜kÔ*Ø—<’< G¨lÑ$:¸aÒ$?Ø—M‘M I¨a°×0@Ñ0@Ñ.@Ð-AÀÀqÀcÐI]Ð^kÐ]lÐlmÐnuÐmvÐv}Ð"~Ôà˜1‘�Ø—‘ 	¨&¨°°q°cÐ9TÐTÕUð #ð �M‰M˜% %¨¡)Ñ+¨hÑ6Ö7ð# (ð$ 	�‰�iÔ à�{Š{Ø�M‰M˜.Õ)ð r   c                 ój  — || j                   v r| j                   |   S |}| j                  j                  |«      s(|j                  }| j                  j                  |«      sŒ(| j                  j	                  |«      }d}|d   rd|d   z   dz   }|d   r|dz  }|d   r|dz  }|| j                   |<   |S )	Nr6   Úcolorz fill="#r   Úboldz font-weight="bold"Úitalicz font-style="italic")r0   rI   Ústyles_tokenÚparentÚstyle_for_token)r1   Ú	tokentypeÚ
otokentyperH   Úresults        r   r<   zSvgFormatter._get_styleª   sÃ   € Ø˜×(Ñ(Ñ(Ø×#Ñ# IÑ.Ð.Øˆ
Ø—*‘*×)Ñ)¨)Ô4Ø!×(Ñ(ˆIð —*‘*×)Ñ)¨)Õ4à—
‘
×*Ñ*¨9Ó5ˆØˆØ�Š>Ø %¨¡.Ñ0°3Ñ6ˆFØ�Š=ØÐ+Ñ+ˆFØ�Š?ØÐ,Ñ,ˆFØ'-ˆ×Ñ˜Ñ$Øˆr   N)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameÚaliasesÚ	filenamesr*   rN   r<   © r   r   r   r      s-   „ ñ:ðv €DØˆg€GØ�	€Iòò,5*ónr   N)r\   Úpygments.formatterr   Úpygments.tokenr   Úpygments.utilr   r   Ú__all__r   Úclass2styler   r`   r   r   Ú<module>rf      s7   ðñõ )Ý "ß 3àÐ
€ò&ð €ô\�9õ \r   