ruạṛ
3 ��X� � @ sF d Z ddlmZ ddlmZmZ dgZdd� Zi ZG dd� de�Z dS ) z� pygments.formatters.svg ~~~~~~~~~~~~~~~~~~~~~~~ Formatter for SVG output. :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. � )� Formatter)�get_bool_opt�get_int_opt�SvgFormatterc C s, | j dd�j dd�j dd�j dd�j d d �S )z<Escape &, <, > as well as single and double quotes for HTML.�&z&�<z<�>z>�"z"�'z')�replace)�text� r �/usr/lib/python3.6/svg.py�escape_html s r c @ s8 e Zd ZdZdZdgZdgZdd� Zdd� Zd d � Z dS )r ak 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"``. `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| f|� t|dd�| _|jdd�| _|jdd�| _t|dd�| _| jj � }|j d �rj|d d� j � }yt|�}W n d}Y nX t|d|�| _t|d |d �| _ t|dd�| _i | _d S )N�nowrapF� fontfamilyZ monospace�fontsizeZ14px�xoffsetr Zpx� � �yoffset�ystep� � spacehackT���)r �__init__r r �getr r r r �strip�endswith�intr r r �_stylecache)�selfZoptionsZfsZint_fsr r r r P s zSvgFormatter.__init__c C sN | j }| j}| js^| jr*|jd| j � n |jd� |jd� |jd� |jd| j| jf � |jd||f � x�|D ]�\}}| j|�}|r�d| d p�d }|r�d p�d } t|�}| j r�|j � jdd�}|jd �} xB| dd� D ]2}|j|| | � || j 7 }|jd||f � q�W |j|| d | � qvW |jd� | j�sJ|jd� 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="%s"?> 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="%s" font-size="%s"> z)<text x="%s" y="%s" xml:space="preserve">z<tspanr � z</tspan>� z � N� z1</text> <text x="%s" y="%s" xml:space="preserve">z</text>z</g></svg> ���r&