h^dZddlmZddlmZddlmZmZdgZdZ iZ GddeZ dS) z pygments.formatters.svg ~~~~~~~~~~~~~~~~~~~~~~~ Formatter for SVG output. :copyright: Copyright 2006-2024 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. ) Formatter)Comment) get_bool_opt get_int_opt SvgFormatterc|ddddddddd d S) z as well as single and double quotes for HTML.&z&z>"z"'z')replace)texts /builddir/build/BUILD/imunify360-venv-2.5.2/opt/imunify360/venv/lib/python3.11/site-packages/pip/_vendor/pygments/formatters/svg.py escape_htmlrsT <<W % %V$$V$$X&&W%% &c4eZdZdZdZdgZdgZdZdZdZ dS) ra Format tokens as an SVG graphics file. This formatter is still experimental. Each line of code is a ```` element with explicit ``x`` and ``y`` coordinates containing ```` elements with the individual token styles. By default, this formatter outputs a full SVG document including doctype declaration and the ```` root element. .. versionadded:: 0.9 Additional options accepted: `nowrap` Don't wrap the SVG ```` elements in ```` 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 ```` element's ``font-family`` attribute, defaults to ``"monospace"``. `fontsize` The value to give the wrapping ```` 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``. SVGsvgz*.svgc�������������� ��� ���t����������j��������|�fi�|�t����������|dd����������|�_��������|��������������������dd����������|�_��������|��������������������dd����������|�_��������t����������|dd����������|�_��������|�j�������� ��������������������������������}| ��������������������d ����������r|d�d ��������� ��������������������������������} �t����������|����������}n#�t����������$�r�d }Y�nw�xY�wt����������|d |����������|�_ ��������t����������|d |dz�������������|�_��������t����������|dd����������|�_��������t����������|dd����������|�_��������t����������|dd����������|�_��������t����������|dd����������|�_��������t����������|dd|�j��������z������������|�_��������i�|�_��������d�S�)NnowrapF fontfamily monospacefontsize14pxxoffsetr���px���yoffsetystep��� spacehackTlinenos linenostart��� linenostep linenowidth���)r���__init__r���r���getr���r���r���r���stripendswithint ValueErrorr ���r!���r#���r$���r%���r'���r(��� _stylecache)selfoptionsfsint_fss��� r���r*���zSvgFormatter.__init__]���s|���4++7+++"7He<< !++lK@@ J77 "7Iq99 ] " " ;;t  � !CRCB WWFF� � � FFF "7Iv>>  '6A:>> %g{DAA#GIe<< &w}Q??%gl1==&w}a lKKs����C� CCc����������� ������h���|�j���������}|�j��������}|�j��������s|�j��������r|��������������������d|�j���������d�����������n|��������������������d�����������|��������������������d�����������|��������������������d�����������|��������������������d|�j���������d|�j���������d�����������|�j��������}|�j��������}|� ��������������������t��������������������}|}|�j ��������rJ||z��d k����r*|��������������������d ||�j ��������z����d |�d |�d |�d �����������||�j ��������|�j ��������z���z ��}|dz ��}|��������������������d |�d |�d�����������|D�]C\��} } |� ��������������������| ����������} | rd| z���dz���pd} | rdpd} t����������| ����������} |�j��������r(| ����������������������������������������������������dd����������} | ��������������������d����������}|dd���������D�]}|��������������������| |z���| z��������������||�j ��������z ��}|��������������������d�����������|�j ��������r3||z��d k����r*|��������������������d ||�j ��������z����d |�d|�d|�d �����������|dz ��}|��������������������d |�d |�d�����������|��������������������| |d���������z���| z��������������E|��������������������d�����������|�j��������s|��������������������d�����������dS�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 z zk z) z r���z zr&���z" xml:space="preserve">z z  Nz z" text-anchor="end" z )rr rencodingwriterrr%r' _get_stylerr$r(r!rr# expandtabsrsplit)r1 tokensourceoutfilexycounter counter_step counter_styleline_xttypevaluestyletspantspanendpartsparts rformat_unencodedzSvgFormatter.format_unencodedssL L L{ `} 9 St}SSSTTTT 7888 MM* + + + MMF G G G MM^T_^^4=^^^ _ _ _" 00  < %** z!D,<*<zz1zz zzjqzzz{{{ d&3 3F qLG I&IIqIIIJJJ' 8 8LE5OOE**E4h.4:E+1rH&&E~ B((**223AAKK%%Ecrc  V V edlX5666TZ k***<@Gl$:a$?$?MM"~a0@.@"~"~q"~"~^k"~"~nu"~"~"~1  T&TTqTTTUUUU MM%%)+h6 7 7 7 7 i   { * MM. ) ) ) ) ) * *rcX||jvr |j|S|}|j|s!|j}|j|!|j|}d}|drd|dzdz}|dr|dz }|dr|dz }||j|<|S) Nr6colorz fill="#r boldz font-weight="bold"italicz font-style="italic")r0rI styles_tokenparentstyle_for_token)r1 tokentype otokentyperHresults rr<zSvgFormatter._get_styles ( ( (#I. . *)))44 )!(I*)))44 ) **955 > 7%.036F = , + +F ? - , ,F'-$ rN) __name__ __module__ __qualname____doc__namealiases filenamesr*rNr<rrrrsb::v DgG I,5*5*5*nrN) r\pip._vendor.pygments.formatterrpip._vendor.pygments.tokenrpip._vendor.pygments.utilrr__all__r class2stylerr`rrrfs544444......????????  &&& \\\\\9\\\\\r