B
    \Y                 @   s   d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	m
Z
 ddlmZ ddlmZ ddlmZ G d	d
 d
ejZG dd de	jeZG dd de
jZG dd de
jZG dd de
jZG dd deZdd ZdS )z
    sphinx.directives.patches
    ~~~~~~~~~~~~~~~~~~~~~~~~~

    :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    )nodes)make_id)
directives)imageshtmltables)addnodes)SphinxDirective)set_source_infoc               @   s   e Zd ZdZdd ZdS )FigureziThe figure directive which applies `:name:` option to the figure node
    instead of the image node.
    c             C   s   | j dd }tj| }t|dks6t|d tjr:|S |\}|rX|| j d< | 	| |j
d krzt|dkrz|d j
|_
|gS )Nname   r      )optionspopr   r   runlen
isinstancer   Zsystem_messageadd_nameline)selfr   resultZfigure_node r   8lib/python3.7/site-packages/sphinx/directives/patches.pyr      s    

z
Figure.runN)__name__
__module____qualname____doc__r   r   r   r   r   r      s   r   c               @   s   e Zd Zdd ZdS )Metac             C   s|   t j| }xj|D ]b}t|tjrt|jd d t jjr|jd d }| j	
| j	j|_| j|_|d |_tj|_qW |S )Nr   r   content)r   r   r   r   r   pendingZdetailsZMetaBodymetaenvZdoc2pathdocnamesourcelinenor   Z
rawcontentr   	__class__)r   r   noder!   r   r   r   r   2   s    

zMeta.runN)r   r   r   r   r   r   r   r   r   1   s   r   c               @   s   e Zd ZdZdd ZdS )RSTTablezxThe table directive which sets source and line information to its caption.

    Only for docutils-0.13 or older version.c             C   s&   t j| \}}|rt| | ||fS )N)r   r(   
make_titler
   )r   titlemessager   r   r   r)   H   s    
zRSTTable.make_titleN)r   r   r   r   r)   r   r   r   r   r(   C   s   r(   c               @   s   e Zd ZdZdd ZdS )CSVTablez|The csv-table directive which sets source and line information to its caption.

    Only for docutils-0.13 or older version.c             C   s&   t j| \}}|rt| | ||fS )N)r   r,   r)   r
   )r   r*   r+   r   r   r   r)   V   s    
zCSVTable.make_titleN)r   r   r   r   r)   r   r   r   r   r,   Q   s   r,   c               @   s   e Zd ZdZdd ZdS )	ListTablez}The list-table directive which sets source and line information to its caption.

    Only for docutils-0.13 or older version.c             C   s&   t j| \}}|rt| | ||fS )N)r   r-   r)   r
   )r   r*   r+   r   r   r   r)   d   s    
zListTable.make_titleN)r   r   r   r   r)   r   r   r   r   r-   _   s   r-   c               @   s>   e Zd ZdZdZdZdZejejej	dZ
dd Zdd Zd	S )
MathDirectiveTr   r   )labelr   nowrapc             C   s   d | j}| jr.| jd r.| jd d | }| jd| jd}tj||| jjj	j
jd |d| jkd}| | t| | |g}| | |S )N
r   z

r/   r   r0   )r#   numberr/   r0   )joinr   Z	argumentsr   getr   Z
math_blockstatedocumentZsettingsr"   r#   r   r
   
add_target)r   Zlatexr/   r'   retr   r   r   r   y   s    


zMathDirective.runc       	   
   C   s   |d }|d dks$| j jrD|d sD| jd}d| jj|f |d< |d sPd S | jd}y`|| j| jj|d }||d< td|d  }tj	dd|gd	}| j
j| |d| W n< tk
r } z| jjj|jd | jd
 W d d }~X Y nX d S )Nr   r/    zsphinx.ext.math#equationsz%s:%dmathr2   zequation-%s)Zids)r   )ZconfigZmath_number_allr"   Znew_serialnor#   Z
get_domainZadd_equationr   r   targetr5   r6   Znote_explicit_targetinsertUserWarningZstate_machineZreporterZwarningargsr%   )	r   r8   r'   seqZdomainZeqnoZnode_idr;   excr   r   r   r7      s     zMathDirective.add_targetN)r   r   r   Zhas_contentZrequired_argumentsZoptional_argumentsZfinal_argument_whitespacer   Z	unchangedflagZoption_specr   r7   r   r   r   r   r.   m   s   
r.   c             C   sT   t dt t dt t dt t dt t dt t dt dddd	S )
NZfigurer!   tablez	csv-tablez
list-tabler:   ZbuiltinT)versionZparallel_read_safeZparallel_write_safe)r   Zregister_directiver   r   r(   r,   r-   r.   )Zappr   r   r   setup   s    rD   N)r   Zdocutilsr   Zdocutils.nodesr   Zdocutils.parsers.rstr   Zdocutils.parsers.rst.directivesr   r   r   Zsphinxr   Zsphinx.util.docutilsr	   Zsphinx.util.nodesr
   r   r   r(   r,   r-   r.   rD   r   r   r   r   <module>   s   :