ó
    öÞ jÄ  ã                   óT   • S r SSKJr  SSKJr  SSKJrJrJr  S/r	0 r
 " S S\5      rg)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Úhtml_escapeÚSvgFormatterc                   ó:   • \ rS rSrSrSrS/rS/rS rS r	S r
S	rg
)r   é   ad  
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                 óÂ  • [         R                  " U 40 UD6  [        USS5      U l        UR	                  SS5      U l        UR	                  SS5      U l        [        USS5      U l        U R                  R                  5       nUR                  S	5      (       a  US S
 R                  5       n [        U5      n[        USU5      U l        [        USUS-   5      U l        [        USS5      U l        [        USS5      U l        [        USS5      U l        [        USS5      U l        [        USSU R                  -  5      U l        0 U l        g ! [         a    Sn N¤f = f)NÚnowrapFÚ
fontfamilyÚ	monospaceÚfontsizeÚ14pxÚxoffsetr   Úpxéþÿÿÿr
   Ú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       ÚQ/var/www/html/gaurav/venv/lib/python3.13/site-packages/pygments/formatters/svg.pyr    ÚSvgFormatter.__init__T   s7  € Ü×Ò˜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                 óØ  • U R                   nU R                  nU R                  (       d�  U R                  (       a   UR	                  SU R                   S35        OUR	                  S5        UR	                  S5        UR	                  S5        UR	                  SU R
                   SU R                   S35        U R                  nU R                  nU R                  [        5      nUnU R                  (       aR  XV-  S	:X  a*  UR	                  S
X0R                  -    SU SU SU S3	5        X€R                  U R                  -   -  nUS-  nUR	                  S
U SU S35        U GHL  u  pšU R                  U	5      nU=(       a    SU-   S-   =(       d    SnU=(       a    S=(       d    Sn[        U
5      n
U R                  (       a   U
R!                  5       R#                  SS5      n
U
R%                  S5      nUSS  H˜  nUR	                  XÏ-   U-   5        X@R                  -  nUR	                  S5        U R                  (       a2  XV-  S	:X  a*  UR	                  S
X0R                  -    SU SU SU S3	5        US-  nUR	                  S
U SU S35        Mš     UR	                  XÎS   -   U-   5        GMO     UR	                  S5        U R                  (       d  UR	                  S5        gg)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<tspanÚ>Ú 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   Ú
expandtabsÚreplaceÚsplit)r'   ÚtokensourceÚoutfileÚxÚyÚcounterÚcounter_stepÚcounter_styleÚline_xÚttypeÚvalueÚstyleÚtspanÚtspanendÚpartsÚparts                   r+   Úformat_unencodedÚSvgFormatter.format_unencodedj   sŸ  € ð �L‰LˆØ�L‰LˆØ�{�{Ø�}�}Ø—‘Ð >¸t¿}¹}¸oÈUÐSÕTà—‘Ð7Ô8Ø�M‰Mð *ô +ð �M‰MÐFÔGØ�M‰MÐ,¨T¯_©_Ð,=¸]È4Ï=É=È/ÐY]Ð^Ô_à×"Ñ"ˆØ—‘ˆØŸ™¬Ó0ˆØˆà�<�<ØÑ%¨Ó*Ø—‘ 	¨!×,<Ñ,<Ñ*<Ð)=¸UÀ1À#ÀRÈÀÐViÐjqÐirÐryÐzÔ{Ø×&Ñ&¨¯©Ñ3Ñ3ˆFØ�q‰LˆGà�‰˜	 & ¨¨q¨cÐ1HÐIÔJÜ'‰LˆEØ—O‘O EÓ*ˆEØ×4˜h¨Ñ.°Ñ4×:¸ˆEØ×+ ×1¨rˆHÜ Ó&ˆEØ�~�~Ø×(Ñ(Ó*×2Ñ2°3¸ÓA�Ø—K‘K Ó%ˆEØ˜c˜r›
�Ø—‘˜e™l¨XÑ5Ô6Ø—Z‘Z‘�Ø—‘˜kÔ*Ø—<—< GÑ$:¸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˜.Õ)ð ó    c                 óž  • XR                   ;   a  U R                   U   $ UnU R                  R                  U5      (       d.  UR                  nU R                  R                  U5      (       d  M.  U R                  R	                  U5      nSnUS   (       a  SUS   -   S-   nUS   (       a  US-  nUS   (       a  US-  nX@R                   U'   U$ )	Nr/   Úcolorz fill="#Ú"Úboldz font-weight="bold"Úitalicz font-style="italic")r&   rC   Ústyles_tokenÚparentÚstyle_for_token)r'   Ú	tokentypeÚ
otokentyperB   Úresults        r+   r5   ÚSvgFormatter._get_style¡   sÅ   € Ø×(Ñ(Ó(Ø×#Ñ# IÑ.Ð.Øˆ
Ø—*‘*×)Ñ)¨)×4Ñ4Ø!×(Ñ(ˆIð —*‘*×)Ñ)¨)×4Ó4à—
‘
×*Ñ*¨9Ó5ˆØˆØ��>Ø %¨¡.Ñ0°3Ñ6ˆFØ��=ØÐ+Ñ+ˆFØ��?ØÐ,Ñ,ˆFØ'-×Ñ˜Ñ$ØˆrJ   )r&   r   r   r   r   r   r   r   r   r   r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚnameÚaliasesÚ	filenamesr    rH   r5   Ú__static_attributes__© rJ   r+   r   r      s-   † ñ:ðv €DØˆg€GØ�	€Iòò,5*õnrJ   N)r[   Úpygments.formatterr   Úpygments.tokenr   Úpygments.utilr   r   r   Ú__all__Úclass2styler   r`   rJ   r+   Ú<module>rf      s5   ðñõ )Ý "ß @Ñ @àÐ
€ð €ô\�9õ \rJ   