|eVdZddlmZddlmZddlmZmZdgZdZ iZ GddeZ y) z pygments.formatters.svg ~~~~~~~~~~~~~~~~~~~~~~~ Formatter for SVG output. :copyright: Copyright 2006-2023 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. ) Formatter)Comment) get_bool_opt get_int_opt SvgFormatterc|jddjddjddjddjd d S) z as well as single and double quotes for HTML.&z&z>"z"'z')replace)texts 9/usr/lib/python3/dist-packages/pygments/formatters/svg.py escape_htmlrsE <<W %V$V$X&W% &c2eZdZdZdZdgZdgZdZdZdZ y) 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������|�_��������|j ������������������dd������|�_��������|j ������������������dd������|�_��������t��������|dd������|�_��������|�j ������������������j�������������������������}|j������������������d ������r|d�d �j�������������������������} �t��������|������}t��������|d |������|�_ ��������t��������|d |dz���������|�_ ��������t��������|dd������|�_��������t��������|dd������|�_��������t��������|dd������|�_��������t��������|dd������|�_��������t��������|dd|�j������������������z��������|�_��������i�|�_��������y�#��d }Y�xY�w)NnowrapF fontfamily monospacefontsize14pxxoffsetr���px���yoffsetystep��� spacehackTlinenos linenostart��� linenostep linenowidth���)r���__init__r���r���getr���r���r���r���stripendswithintr ���r!���r#���r$���r%���r'���r(��� _stylecache)selfoptionsfsint_fss��� r���r*���zSvgFormatter.__init__]���s)���4+7+"7He< !++lK@ J7 "7Iq9 ]] " ;;t 2cr7==?b WF�#7Iv>  '6A:> %g{DA#GIe< &w}Q?%gl1=&w}a lK Fs ���( E � Ec����������� ������x���|�j�������������������}|�j������������������}|�j������������������s|�j������������������r|j ������������������d|�j������������������z���������n|j ������������������d�������|j ������������������d�������|j ������������������d�������|j ������������������d|�j ������������������d|�j ������������������d�������|�j������������������}|�j������������������}|�j������������������t��������������}|}|�j������������������rT||z��dk(��r+|j ������������������d ||�j������������������z���d |d |d |d �������||�j������������������|�j������������������z���z ��}|dz ��}|j ������������������d |d |d�������|D�]0��\��} } |�j������������������| ������} | xr�d| z���dz���xs�d} | xr�dxs�d} t��������| ������} |�j������������������r | j!�������������������������j#������������������dd������} | j%������������������d������}|dd�D�]��}|j ������������������| |z���| z����������||�j������������������z ��}|j ������������������d�������|�j������������������r3||z��dk(��r+|j ������������������d ||�j������������������z���d |d|d|d �������|dz ��}|j ������������������d |d |d��������|j ������������������| |d���z���| z����������3�|j ������������������d �������|�j������������������s|j ������������������d�������yy)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)r0 tokensourceoutfilexycounter counter_step counter_styleline_xttypevaluestyletspantspanendpartsparts rformat_unencodedzSvgFormatter.format_unencodedrs LL LL{{}} E"mm,- 78 MM* + MMF G MM??DMM; <"" 0  <<%* t'''-AB d&&3 3F qLG VQOP' 8LE5OOE*E4h.4:E+1rH&E~~((*223AKK%Ecr [ edlX56TZZ k*<%.036F = + +F ? , ,F'-$ rN) __name__ __module__ __qualname____doc__namealiases filenamesr*rMr;rrrrs-:v DgG I*9*vrN) r[pygments.formatterrpygments.tokenr pygments.utilrr__all__r class2stylerr_rrres7)"3  & _9_r