File manager - Edit - /opt/saltstack/salt/lib/python3.10/site-packages/pygments/formatters/__pycache__/svg.cpython-310.pyc
Back
o ;j� � @ sR d Z ddlmZ ddlmZ ddlmZmZ dgZdd� Z i Z G dd� de�Zd S ) 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 C s, | � dd�� dd�� dd�� dd�� d d �S )z<Escape &, <, > as well as single and double quotes for HTML.�&z&�<z<�>z>�"z"�'z')�replace)�text� r �K/opt/saltstack/salt/lib/python3.10/site-packages/pygments/formatters/svg.py�escape_html s �r c @ s8 e Zd ZdZdZdgZdgZdd� Zdd� Zd d � Z dS )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 `` ``, 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``. ZSVGZsvgz*.svgc K s t j| fi |�� t|dd�| _|�dd�| _|�dd�| _t|dd�| _| j� � }|� d �r7|d d � � � }zt|�}W n tyH d}Y nw t|d|�| _ t|d |d �| _t|dd�| _t|dd�| _t|dd�| _t|dd�| _t|dd| j �| _i | _d S )N�nowrapF� fontfamilyZ monospace�fontsizeZ14px�xoffsetr Zpx���� �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�fsZint_fsr r r r! ] s* � zSvgFormatter.__init__c C s | j }| j}| js4| jr|�d| j� d�� n|�d� |�d� |�d� |�d| j� d| j� d�� | j}| j}| � t �}|}| jrk|| d kr_|�d || j � d|� d|� d |� d� � || j| j 7 }|d7 }|�d |� d|� d�� |D ]�\} } | � | �}|r�d| d p�d}|r�dp�d} t| �} | jr�| �� �dd�} | �d�}|dd� D ]C}|�|| | � || j 7 }|�d� | jr�|| d kr�|�d || j � d|� d|� d|� d� � |d7 }|�d |� d|� d�� q�|�||d | � qy|�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<?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 � 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)r( ZtokensourceZoutfile�x�yZcounterZcounter_stepZ counter_styleZline_xZttype�value�styleZtspanZtspanend�parts�partr r r �format_unencodeds sP * * �zSvgFormatter.format_unencodedc C s� || j v r | j | S |}| j�|�s|j}| j�|�r| j�|�}d}|d r/d|d d }|d r7|d7 }|d r?|d7 }|| j |<