B
    dO                 @   s  d Z ddlZddlZddlZddlZddlZddlmZm	Z	m
Z
mZmZ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 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& erddl'm(Z( e")e*Z+e,e-e,dddZ.G dd de$eZ/dS )zGExperimental docutils writers for HTML5 handling Sphinx's custom nodes.    N)TYPE_CHECKINGIterableOptionalSetTuplecast)nodes)ElementNodeText)HTMLTranslator)addnodes)Builder)RemovedInSphinx60Warning)___admonitionlabels)logging)SphinxTranslator)get_image_size)StandaloneHTMLBuilder)lengthscalereturnc             C   sP   t d| }|s| S |dkr | S | \}}t|| d }dt||f S dS )z/Multiply *length* (width or height) by *scale*.z^(\d*\.?\d*)\s*(\S*)$d   z%s%sN)rematchgroupsfloatint)r   r   Zmatchedamountunitresult r#   a/work/yifan.wang/ringdown/master-ringdown-env/lib/python3.7/site-packages/sphinx/writers/html5.pymultiply_length    s    r%   c                   sn  e Zd ZU dZded< e Zee ed< e	j
edd fddZedd	d
dZedd	ddZedd	ddZedd	ddZedd	ddZedd	ddZedd	ddZedd	ddZedd	ddZedd	ddZedd	ddZedd	d d!Zedd	d"d#Zedd	d$d%Zedd	d&d'Zedd	d(d)Zedd	d*d+Zedd	d,d-Zedd	d.d/Z edd	d0d1Z!edd	d2d3Z"edd	d4d5Z#edd	d6d7Z$edd	d8d9Z%edd	d:d;Z&edd	d<d=Z'edd	d>d?Z(edd	d@dAZ)edd	dBdCZ*edd	dDdEZ+edd	dFdGZ,edd	dHdIZ-edd	dJdKZ.edd	dLdMZ/deeddOdPdQZ0de1e dd	dRdSZ2edd	dTdUZ3edd	dVdWZ4ee1e5e6dXf  d	dYdZZ7edd	d[d\Z8edd	d]d^Z9eedd_d`daZ:edd	 fdbdcZ;edd	dddeZ<edd	dfdgZ=edd	dhdiZ>edd	djdkZ?edd	dldmZ@edd	dndoZAedd	 fdpdqZBedd	 fdrdsZCedd	 fdtduZDedd	 fdvdwZEedd	 fdxdyZFedd	dzd{ZGedd	d|d}ZHedd	d~dZIedd	ddZJedd	ddZKedd	ddZLedd	ddZMedd	ddZNedd	ddZOedd	ddZPedd	ddZQedd	ddZRedd	ddZSedd	ddZTedd	ddZUedd	 fddZVedd	 fddZWedd	 fddZXedd	ddZYedd	ddZZedd	ddZ[edd	ddZ\edd	ddZ]edd	ddZ^edd	ddZ_edd	ddZ`edd	ddZaedd	ddZbedd	ddZceddd	ddZeedd	ddZfedd	ddZgedd	ddZhedd	ddZiedd	ddZjedd	ddZkedd	ddÄZledd	ddńZmedd	ddǄZnedd	ddɄZoedd	dd˄Zpedd	dd̈́Zqedd	ddτZredd	ddфZsedd	ddӄZtedd	ddՄZuedd	ddׄZvedd	ddلZwedd	ddۄZxedd	dd݄Zyedd	dd߄Zzedd	ddZ{edd	ddZ|edd	ddZ}edd	ddZ~edd	ddZedd	ddZedd	 fddZedd	ddZedd	 fddZedd	 fddZedd	ddZdeeddddZd	eeddddZd
eeddddZdeeddddZedd	dd Zee6dddZee6dddZ  ZS (  HTML5Translatorz%
    Our custom HTML translator.
    r   buildersupported_inline_tagsN)documentr'   r   c                sd   t  || | jj| _| jjg| _| jj| _d| _| jj	| _
d| _d| _dg| _dg| _d| _d S )Nr    )super__init__r'   highlighterZcurrent_docnamedocnamesconfigmanpages_urlprotect_literal_textZhtml_secnumber_suffixsecnumber_suffixparam_separatoroptional_param_level_table_row_indices_fieldlist_row_indicesrequired_params_left)selfr)   r'   )	__class__r#   r$   r,   8   s    


zHTML5Translator.__init__)noder   c             C   s(   | j |d  | jd|d   d S )Ndocnamez<span id="document-%s"></span>)r.   appendbody)r8   r:   r#   r#   r$   visit_start_of_fileF   s    z#HTML5Translator.visit_start_of_filec             C   s   | j   d S )N)r.   pop)r8   r:   r#   r#   r$   depart_start_of_fileK   s    z$HTML5Translator.depart_start_of_filec             C   s   | j | |d d S )Ndl)r=   r<   starttag)r8   r:   r#   r#   r$   
visit_descU   s    zHTML5Translator.visit_descc             C   s   | j d d S )Nz</dl>

)r=   r<   )r8   r:   r#   r#   r$   depart_descX   s    zHTML5Translator.depart_descc             C   s&   | j | |d |  jd7  _d S )Ndt   )r=   r<   rB   r1   )r8   r:   r#   r#   r$   visit_desc_signature[   s    z$HTML5Translator.visit_desc_signaturec             C   s8   |  j d8  _ |ds(| |td | jd d S )NrF   Zis_multilinezPermalink to this definitionz</dt>
)r1   getadd_permalink_refr   r=   r<   )r8   r:   r#   r#   r$   depart_desc_signature`   s    
z%HTML5Translator.depart_desc_signaturec             C   s   d S )Nr#   )r8   r:   r#   r#   r$   visit_desc_signature_linef   s    z)HTML5Translator.visit_desc_signature_linec             C   s,   | dr| |jtd | jd d S )NZadd_permalinkzPermalink to this definitionz<br />)rH   rI   parentr   r=   r<   )r8   r:   r#   r#   r$   depart_desc_signature_linei   s    
z*HTML5Translator.depart_desc_signature_linec             C   s   | j | |dd d S )Nddr*   )r=   r<   rB   )r8   r:   r#   r#   r$   visit_desc_contento   s    z"HTML5Translator.visit_desc_contentc             C   s   | j d d S )Nz</dd>)r=   r<   )r8   r:   r#   r#   r$   depart_desc_contentr   s    z#HTML5Translator.depart_desc_contentc             C   s   | j | |dd d S )Nspanr*   )r=   r<   rB   )r8   r:   r#   r#   r$   visit_desc_inlineu   s    z!HTML5Translator.visit_desc_inlinec             C   s   | j d d S )Nz</span>)r=   r<   )r8   r:   r#   r#   r$   depart_desc_inlinex   s    z"HTML5Translator.depart_desc_inlinec             C   s   | j | |dd d S )NrQ   r*   )r=   r<   rB   )r8   r:   r#   r#   r$   visit_desc_name~   s    zHTML5Translator.visit_desc_namec             C   s   | j d d S )Nz</span>)r=   r<   )r8   r:   r#   r#   r$   depart_desc_name   s    z HTML5Translator.depart_desc_namec             C   s   | j | |dd d S )NrQ   r*   )r=   r<   rB   )r8   r:   r#   r#   r$   visit_desc_addname   s    z"HTML5Translator.visit_desc_addnamec             C   s   | j d d S )Nz</span>)r=   r<   )r8   r:   r#   r#   r$   depart_desc_addname   s    z#HTML5Translator.depart_desc_addnamec             C   s   d S )Nr#   )r8   r:   r#   r#   r$   visit_desc_type   s    zHTML5Translator.visit_desc_typec             C   s   d S )Nr#   )r8   r:   r#   r#   r$   depart_desc_type   s    z HTML5Translator.depart_desc_typec             C   s(   | j d | j d | j d d S )Nz <span class="sig-return">z-<span class="sig-return-icon">&#x2192;</span>z# <span class="sig-return-typehint">)r=   r<   )r8   r:   r#   r#   r$   visit_desc_returns   s    z"HTML5Translator.visit_desc_returnsc             C   s   | j d d S )Nz</span></span>)r=   r<   )r8   r:   r#   r#   r$   depart_desc_returns   s    z#HTML5Translator.depart_desc_returnsc             C   s:   | j d d| _d| _tdd |jD | _|j| _d S )Nz <span class="sig-paren">(</span>rF   r   c             S   s   g | ]}t |tjqS r#   )
isinstancer   Zdesc_parameter).0cr#   r#   r$   
<listcomp>   s   z<HTML5Translator.visit_desc_parameterlist.<locals>.<listcomp>)	r=   r<   first_paramr4   sumchildrenr7   Zchild_text_separatorr3   )r8   r:   r#   r#   r$   visit_desc_parameterlist   s    z(HTML5Translator.visit_desc_parameterlistc             C   s   | j d d S )Nz <span class="sig-paren">)</span>)r=   r<   )r8   r:   r#   r#   r$   depart_desc_parameterlist   s    z)HTML5Translator.depart_desc_parameterlistc             C   sT   | j rd| _ n| js"| j| j | jdkr:|  jd8  _|dsP| jd d S )Nr   rF   noemphz<em class="sig-param">)r`   r7   r=   r<   r3   r4   hasattr)r8   r:   r#   r#   r$   visit_desc_parameter   s    

z$HTML5Translator.visit_desc_parameterc             C   s.   | ds| jd | jr*| j| j d S )Nre   z</em>)rf   r=   r<   r7   r3   )r8   r:   r#   r#   r$   depart_desc_parameter   s    
z%HTML5Translator.depart_desc_parameterc             C   s   |  j d7  _ | jd d S )NrF   z<span class="optional">[</span>)r4   r=   r<   )r8   r:   r#   r#   r$   visit_desc_optional   s    z#HTML5Translator.visit_desc_optionalc             C   s   |  j d8  _ | jd d S )NrF   z<span class="optional">]</span>)r4   r=   r<   )r8   r:   r#   r#   r$   depart_desc_optional   s    z$HTML5Translator.depart_desc_optionalc             C   s   | j | j|dddd d S )NZemr*   property)CLASS)r=   r<   rB   )r8   r:   r#   r#   r$   visit_desc_annotation   s    z%HTML5Translator.visit_desc_annotationc             C   s   | j d d S )Nz</em>)r=   r<   )r8   r:   r#   r#   r$   depart_desc_annotation   s    z&HTML5Translator.depart_desc_annotationc             C   s    | j | j|d|d d d S )Ndivtype)rl   )r=   r<   rB   )r8   r:   r#   r#   r$   visit_versionmodified   s    z%HTML5Translator.visit_versionmodifiedc             C   s   | j d d S )Nz</div>
)r=   r<   )r8   r:   r#   r#   r$   depart_versionmodified   s    z&HTML5Translator.depart_versionmodifiedc          	   C   s\  ddi}| dsd|kr,|d  d7  < n|d  d7  < d|kr|d pNd|d< | jjr|d d	r| |d |d< d
| _n d|kstdd|d  |d< t|jt	j
st|dkrt|d t	jst|d  d7  < d|kr|d |d< d|kr|d |d< | j| j|ddf| | drX| jd| j dtt|d   d S )Nclass	referenceZinternalrefuriz	 internalz	 external#hrefzmailto:TZrefidz3References must have "refuri" or "refid" attribute.rF   r   z image-referenceZreftitletitletargetar*   	secnumberz%s.)rH   settingscloak_email_addresses
startswithZcloak_mailto	in_mailtoAssertionErrorr\   rL   r   ZTextElementlenimager=   r<   rB   r2   joinmapstr)r8   r:   attsr#   r#   r$   visit_reference   s.    
 
zHTML5Translator.visit_referencec             C   s   |  | d S )N)r   )r8   r:   r#   r#   r$   visit_number_reference   s    z&HTML5Translator.visit_number_referencec             C   s   |  | d S )N)depart_reference)r8   r:   r#   r#   r$   depart_number_reference   s    z'HTML5Translator.depart_number_referencec             C   s
   t jd S )N)r   SkipNode)r8   r:   r#   r#   r$   visit_comment   s    zHTML5Translator.visit_commentr*   )r:   namer   c             C   s<   | j | j|dd| d |r8|dt|t|  d S )Nro   zadmonition )rl   r   )r=   r<   rB   insertr   rx   r   )r8   r:   r   r#   r#   r$   visit_admonition   s    
z HTML5Translator.visit_admonitionc             C   s   | j d d S )Nz</div>
)r=   r<   )r8   r:   r#   r#   r$   depart_admonition   s    z!HTML5Translator.depart_admonitionc             C   s   |  |d d S )NZseealso)r   )r8   r:   r#   r#   r$   visit_seealso  s    zHTML5Translator.visit_seealsoc             C   s   |  | d S )N)r   )r8   r:   r#   r#   r$   depart_seealso  s    zHTML5Translator.depart_seealso.c             C   s   | dr|d S t|jtjr| jjdkrb| jd }d||jd d f }|| jjkrd| }n"d|jd d  }|| jjkrd	}| jj |r| jj| S d S )
Nr{   
singlehtmlz%s/#%sidsr   z%s/rv   r*   )	rH   r\   rL   r   sectionr'   r   r.   Z
secnumbers)r8   r:   r;   Z
anchornamer#   r#   r$   get_secnumber  s    


zHTML5Translator.get_secnumberc             C   s4   |  |}|r0| jddtt|| j   d S )Nz&<span class="section-number">%s</span>r|   )r   r=   r<   r   r   r   r2   )r8   r:   r{   r#   r#   r$   add_secnumber  s    
zHTML5Translator.add_secnumberc                sr   t t d d fdd} jjjd |}|rnt|d dkr\td|j }tj	||d n|||d d  d S )	N)figtype	figure_idr   c                s    j jdkr d jd | f }n| }| j j|i kr jd  jj| }|d krrt	d|  }t
| n< j j| | } j|dtt| d   jd d S )	Nr   z%s/%sr   z<span class="caption-number">z#numfig_format is not defined for %sr|    z</span>)r'   r   r.   Z
fignumbersrH   r=   r<   r/   Znumfig_formatr   loggerwarningr   r   r   )r   r   keyprefixmsgnumbers)r8   r#   r$   append_fignumber"  s     z7HTML5Translator.add_fignumber.<locals>.append_fignumberZstdr   r   z Any IDs not assigned for %s node)location)
r   r'   envdomainsZget_enumerable_node_typer   r   tagnamer   r   )r8   r:   r   r   r   r#   )r8   r$   add_fignumber!  s    zHTML5Translator.add_fignumber)r:   rx   r   c             C   sB   |d r>| j jr>| jjr>d}| j||d d || j jf  d S )Nr   z2<a class="headerlink" href="#%s" title="%s">%s</a>r   )r/   html_permalinksr'   add_permalinksr=   r<   html_permalinks_icon)r8   r:   rx   formatr#   r#   r$   rI   ;  s    z!HTML5Translator.add_permalink_refc                s2   t |dkr"t|d tjr"tjt | d S )NrF   r   )r   r\   r   toctreer   r   r+   visit_bullet_list)r8   r:   )r9   r#   r$   r   B  s    z!HTML5Translator.visit_bullet_listc             C   s   | j | |dd d S )NrN   r*   )r=   r<   rB   )r8   r:   r#   r#   r$   visit_definitionI  s    z HTML5Translator.visit_definitionc             C   s   | j d d S )Nz</dd>
)r=   r<   )r8   r:   r#   r#   r$   depart_definitionN  s    z!HTML5Translator.depart_definitionc             C   s   | j | j|dddd d S )NrQ   r*   
classifier)rl   )r=   r<   rB   )r8   r:   r#   r#   r$   visit_classifierR  s    z HTML5Translator.visit_classifierc             C   s6   | j d |jddd}t|tjs2| j d d S )Nz</span>FT)descendsiblingsz</dt>)r=   r<   	next_noder\   r   r   )r8   r:   r   r#   r#   r$   depart_classifierV  s    z!HTML5Translator.depart_classifierc             C   s   | j | |dd d S )NrE   r*   )r=   r<   rB   )r8   r:   r#   r#   r$   
visit_term_  s    zHTML5Translator.visit_termc             C   sN   |j ddd}t|tjrn.t|jjjtjr>| |td | j	
d d S )NFT)r   r   zPermalink to this termz</dt>)r   r\   r   r   rL   r   ZglossaryrI   r   r=   r<   )r8   r:   r   r#   r#   r$   depart_termc  s    zHTML5Translator.depart_termc          	      s   t |jtjrP|jdrP| j| j|ddddd | jd | jd nt	 
| | | | |j t |jtjr| jd d S )	Nr   pr*   captionheading)rl   ZROLEz<span class="caption-text">z</span></p>
)r\   rL   r   Zcompact_paragraphrH   r=   r<   rB   contextr+   visit_titler   r   r   table)r8   r:   )r9   r#   r$   r   q  s    
zHTML5Translator.visit_titlec                s   | j d }| jjr| jjr|jdr|jd r|drN| |jt	d q|dr| j
d|jd d  dt	d| jjf   qt|jtjr| j
d	 | |jt	d
 nt|jtjr| j
d	 t | d S )Nr   r   z</hzPermalink to this headingz</a></hz%</a><a class="headerlink" href="#%s" r   ztitle="%s">%sz</span>zPermalink to this table)r   r/   r   r'   r   rL   rf   r   rI   r   r=   r<   r   r\   r   r   r+   depart_title)r8   r:   Z	close_tag)r9   r#   r$   r   }  s"    


zHTML5Translator.depart_titlec                s   |j | krt |S |dd}|dd}|di }|dd|d< | jj|i }|rr| jjrr| jj}| jj	|j |f|||d|}| j
|dd	d
| d}| j|| d  tjd S )NlanguagedefaultlinenosFhighlight_argsforce)optsr   r   ro   r*   zhighlight-%s notranslate)suffixrl   z</div>
)Z	rawsourceastextr+   visit_literal_blockrH   r/   highlight_optionsZhtml_codeblock_linenos_styler-   highlight_blockrB   r=   r<   r   r   )r8   r:   langr   r   r   highlightedrB   )r9   r#   r$   r     s     
z#HTML5Translator.visit_literal_blockc                s^   t |jtjr(|jdr(| jd nt | | 	|j | j| j
|dddd d S )Nliteral_blockz <div class="code-block-caption">rQ   r*   zcaption-text)rl   )r\   rL   r   	containerrH   r=   r<   r+   visit_captionr   rB   )r8   r:   )r9   r#   r$   r     s
    zHTML5Translator.visit_captionc                s   | j d t|jtjr:|jdr:| |jtd nBt|jtj	r\| |jtd n |jdr|| |jjtd t|jtjr|jdr| j d nt
 | d S )Nz</span>r   zPermalink to this codezPermalink to this imager   zPermalink to this toctreez</div>
)r=   r<   r\   rL   r   r   rH   rI   r   Zfigurer+   depart_caption)r8   r:   )r9   r#   r$   r     s    zHTML5Translator.depart_captionc             C   s   |  | d S )N)r   )r8   r:   r#   r#   r$   visit_doctest_block  s    z#HTML5Translator.visit_doctest_blockc             C   s   | j | |dd  d S )NZ
blockquotez<div>)r=   r<   rB   )r8   r:   r#   r#   r$   visit_block_quote  s    z!HTML5Translator.visit_block_quotec             C   s   | j d d S )Nz</div></blockquote>
)r=   r<   )r8   r:   r#   r#   r$   depart_block_quote  s    z"HTML5Translator.depart_block_quotec             C   s   d|d kr*| j | j|dddd d S |dd }d|d ksF|sr| j | j|dddd |  jd7  _d S | jj|i }| jj|	 |||d	d
}| j|ddd| d}| j ||
  d  tjd S )Nkbdclassesr*   zdocutils literal notranslate)rl   r   coderF   T)r   r   Znowrapz'docutils literal highlight highlight-%s)r   rl   z</code>)r=   r<   rB   rH   r1   r/   r   r-   r   r   stripr   r   )r8   r:   r   r   r   rB   r#   r#   r$   visit_literal  s(    

zHTML5Translator.visit_literalc             C   s8   d|d kr| j d n|  jd8  _| j d d S )Nr   r   z</kbd>rF   z</code>)r=   r<   r1   )r8   r:   r#   r#   r$   depart_literal  s    zHTML5Translator.depart_literalc             C   s   | j | |d g }tttj |}x|D ]}||d  q.W tdd |D }d }x|D ]x}|d r|d |}| j | |dd | j |d  n |d k	r| j dd	t	|   |
|  | j d
 q`W | j d tjd S )NpreZ	tokennamec             s   s   | ]}t |V  qd S )N)r   )r]   r   r#   r#   r$   	<genexpr>  s    z7HTML5Translator.visit_productionlist.<locals>.<genexpr>strongr*   z</strong> ::= z%s     r   
z</pre>
)r=   r<   rB   r   r   r   
productionmaxljustr   Z	walkaboutr   r   )r8   r:   namesZproductionlistr   maxlenlastnamer#   r#   r$   visit_productionlist  s$    


z$HTML5Translator.visit_productionlistc             C   s   d S )Nr#   )r8   r:   r#   r#   r$   depart_productionlist   s    z%HTML5Translator.depart_productionlistc             C   s   d S )Nr#   )r8   r:   r#   r#   r$   visit_production  s    z HTML5Translator.visit_productionc             C   s   d S )Nr#   )r8   r:   r#   r#   r$   depart_production  s    z!HTML5Translator.depart_productionc             C   s    | j | j|dddd  d S )Nr   Zcentered)rl   z<strong>)r=   r<   rB   )r8   r:   r#   r#   r$   visit_centered	  s    zHTML5Translator.visit_centeredc             C   s   | j d d S )Nz</strong></p>)r=   r<   )r8   r:   r#   r#   r$   depart_centered  s    zHTML5Translator.depart_centeredc             C   s   d S )Nr#   )r8   r:   r#   r#   r$   visit_compact_paragraph  s    z'HTML5Translator.visit_compact_paragraphc             C   s   d S )Nr#   )r8   r:   r#   r#   r$   depart_compact_paragraph  s    z(HTML5Translator.depart_compact_paragraphc             C   s   ddd}| j js | jd nd|krl|d  d7  < |d |d< | j| j|ddf| | jd	 nld
|kr|d  d7  < t| j jt	j
|d
 |d< | j| j|ddf| | jd	 n| jd d S )Nzreference downloadr*   )rs   downloadru   rs   z	 externalrw   rz   z</a>filenamez	 internal)r'   Zdownload_supportr   r<   r=   rB   	posixpathr   Zdlpathurllibparsequote)r8   r:   r   r#   r#   r$   visit_download_reference  s     
z(HTML5Translator.visit_download_referencec             C   s   | j | j  d S )N)r=   r<   r   r?   )r8   r:   r#   r#   r$   depart_download_reference*  s    z)HTML5Translator.depart_download_referencec                s   | dd t |S )Nalignr   )
setdefaultr+   visit_figure)r8   r:   )r9   r#   r$   r   .  s    zHTML5Translator.visit_figurec                s  |d }|| j jkr8t| j jtj| j j| |d< d|krd|krPd|kstt	j
| j j|}|d krtjtd|d n0d|krt|d |d< d|krt|d |d< |d }| d	rd
|i}d|kr|d |d< d|kr|d |d< d|krDd|kr$t|d |d |d< d|krDt|d |d |d< |d||d< d|krnd|d  |d< | j| j|ddf| d S t | d S )Nurir   widthheightz7Could not obtain image size. :scale: option is ignored.)r   r   rF   )svgsvgzsrcZaltr   zalign-%srs   Zimgr*   )r'   Zimagesr   r   Zimgpathr   r   r   r   ospathsrcdirr   r   r   r   lowerendswithr%   rH   r=   r<   Zemptytagr+   visit_image)r8   r:   Zoldurisizer   r   )r9   r#   r$   r  5  s@    






zHTML5Translator.visit_imagec                s$   |d   drnt | d S )Nr   )r   r   )r   r  r+   depart_image)r8   r:   )r9   r#   r$   r  `  s    zHTML5Translator.depart_imagec             C   s
   t jd S )N)r   r   )r8   r:   r#   r#   r$   visit_toctreef  s    zHTML5Translator.visit_toctreec             C   s
   t jd S )N)r   r   )r8   r:   r#   r#   r$   visit_indexk  s    zHTML5Translator.visit_indexc             C   s
   t jd S )N)r   r   )r8   r:   r#   r#   r$   visit_tabular_col_specn  s    z&HTML5Translator.visit_tabular_col_specc             C   s   d S )Nr#   )r8   r:   r#   r#   r$   visit_glossaryq  s    zHTML5Translator.visit_glossaryc             C   s   d S )Nr#   )r8   r:   r#   r#   r$   depart_glossaryt  s    zHTML5Translator.depart_glossaryc             C   s   d S )Nr#   )r8   r:   r#   r#   r$   
visit_acksw  s    zHTML5Translator.visit_acksc             C   s   d S )Nr#   )r8   r:   r#   r#   r$   depart_acksz  s    zHTML5Translator.depart_acksc             C   s   | j d d S )Nz<table class="hlist"><tr>)r=   r<   )r8   r:   r#   r#   r$   visit_hlist}  s    zHTML5Translator.visit_hlistc             C   s   | j d d S )Nz</tr></table>
)r=   r<   )r8   r:   r#   r#   r$   depart_hlist  s    zHTML5Translator.depart_hlistc             C   s   | j d d S )Nz<td>)r=   r<   )r8   r:   r#   r#   r$   visit_hlistcol  s    zHTML5Translator.visit_hlistcolc             C   s   | j d d S )Nz</td>)r=   r<   )r8   r:   r#   r#   r$   depart_hlistcol  s    zHTML5Translator.depart_hlistcolc             C   s   |  }| |}| jr|x| j|D ]P}| rD| jd|  q&|dkrZ| j| q&| jdt|d  d  q&W n$| j	r| j
jr| |}| j| d S )Nz<span class="pre">%s</span>z 
z&#160;rF   r   )r   encoder1   Zwords_and_spacesfindallr   r=   r<   r   r   r}   r~   Zcloak_email)r8   r:   textencodedtokenr#   r#   r$   
visit_Text  s    
"
zHTML5Translator.visit_Textc             C   s   |  |d d S )NZnote)r   )r8   r:   r#   r#   r$   
visit_note  s    zHTML5Translator.visit_notec             C   s   |  | d S )N)r   )r8   r:   r#   r#   r$   depart_note  s    zHTML5Translator.depart_notec             C   s   |  |d d S )Nr   )r   )r8   r:   r#   r#   r$   visit_warning  s    zHTML5Translator.visit_warningc             C   s   |  | d S )N)r   )r8   r:   r#   r#   r$   depart_warning  s    zHTML5Translator.depart_warningc             C   s   |  |d d S )NZ	attention)r   )r8   r:   r#   r#   r$   visit_attention  s    zHTML5Translator.visit_attentionc             C   s   |  | d S )N)r   )r8   r:   r#   r#   r$   depart_attention  s    z HTML5Translator.depart_attentionc             C   s   |  |d d S )NZcaution)r   )r8   r:   r#   r#   r$   visit_caution  s    zHTML5Translator.visit_cautionc             C   s   |  | d S )N)r   )r8   r:   r#   r#   r$   depart_caution  s    zHTML5Translator.depart_cautionc             C   s   |  |d d S )NZdanger)r   )r8   r:   r#   r#   r$   visit_danger  s    zHTML5Translator.visit_dangerc             C   s   |  | d S )N)r   )r8   r:   r#   r#   r$   depart_danger  s    zHTML5Translator.depart_dangerc             C   s   |  |d d S )Nerror)r   )r8   r:   r#   r#   r$   visit_error  s    zHTML5Translator.visit_errorc             C   s   |  | d S )N)r   )r8   r:   r#   r#   r$   depart_error  s    zHTML5Translator.depart_errorc             C   s   |  |d d S )Nhint)r   )r8   r:   r#   r#   r$   
visit_hint  s    zHTML5Translator.visit_hintc             C   s   |  | d S )N)r   )r8   r:   r#   r#   r$   depart_hint  s    zHTML5Translator.depart_hintc             C   s   |  |d d S )NZ	important)r   )r8   r:   r#   r#   r$   visit_important  s    zHTML5Translator.visit_importantc             C   s   |  | d S )N)r   )r8   r:   r#   r#   r$   depart_important  s    z HTML5Translator.depart_importantc             C   s   |  |d d S )NZtip)r   )r8   r:   r#   r#   r$   	visit_tip  s    zHTML5Translator.visit_tipc             C   s   |  | d S )N)r   )r8   r:   r#   r#   r$   
depart_tip  s    zHTML5Translator.depart_tipc             C   s
   |  |S )N)Zvisit_emphasis)r8   r:   r#   r#   r$   visit_literal_emphasis  s    z&HTML5Translator.visit_literal_emphasisc             C   s
   |  |S )N)Zdepart_emphasis)r8   r:   r#   r#   r$   depart_literal_emphasis  s    z'HTML5Translator.depart_literal_emphasisc             C   s
   |  |S )N)Zvisit_strong)r8   r:   r#   r#   r$   visit_literal_strong  s    z$HTML5Translator.visit_literal_strongc             C   s
   |  |S )N)Zdepart_strong)r8   r:   r#   r#   r$   depart_literal_strong  s    z%HTML5Translator.depart_literal_strongc             C   s8   i }| dr|d |d< | j| j|ddf| d S )NZexplanationrx   Zabbrr*   )rf   r=   r<   rB   )r8   r:   attrsr#   r#   r$   visit_abbreviation  s    
z"HTML5Translator.visit_abbreviationc             C   s   | j d d S )Nz</abbr>)r=   r<   )r8   r:   r#   r#   r$   depart_abbreviation  s    z#HTML5Translator.depart_abbreviationc             C   s2   |  | | jr.| jjf |j|d< | | d S )Nru   )r*  r0   r   
attributesr   )r8   r:   r#   r#   r$   visit_manpage  s    
zHTML5Translator.visit_manpagec             C   s   | j r| | | | d S )N)r0   r   r+  )r8   r:   r#   r#   r$   depart_manpage  s    
zHTML5Translator.depart_manpagec             C   s   | j d i }dd | jjdD }|dd |d|dd  d	|krbd
|d	  |d< | j|dfdd|i|}| j	| d S )Nr   c             S   s   g | ]}| d qS )z 	
)r   )r]   clsr#   r#   r$   r_     s    z/HTML5Translator.visit_table.<locals>.<listcomp>,docutilszalign-%sr   r   r   z	width: %sstyler   rl   r   )
r5   r<   r}   table_stylesplitr   rH   rB   r   r=   )r8   r:   r   r   tagr#   r#   r$   visit_table  s    zHTML5Translator.visit_tablec                s   | j   t | d S )N)r5   r?   r+   depart_table)r8   r:   )r9   r#   r$   r<    s    
zHTML5Translator.depart_tablec             C   sb   | j d  d7  < | j d d dkr4|d d n|d d | j| |dd	 d|_d S )
Nr   rF      r   r   zrow-evenzrow-oddtrr*   )r5   r<   r=   rB   column)r8   r:   r#   r#   r$   	visit_row
  s    zHTML5Translator.visit_rowc                s   | j d t |S )Nr   )r6   r<   r+   visit_field_list)r8   r:   )r9   r#   r$   rA    s    z HTML5Translator.visit_field_listc                s   | j   t |S )N)r6   r?   r+   depart_field_list)r8   r:   )r9   r#   r$   rB    s    
z!HTML5Translator.depart_field_listc             C   sF   | j d  d7  < | j d d dkr4|d d n|d d d S )Nr   rF   r=  r   r   z
field-evenz	field-odd)r6   r<   )r8   r:   r#   r#   r$   visit_field  s    zHTML5Translator.visit_field)r:   math_envr   c             C   s*   | j j}| j jjj| \}}|| | d S )N)r'   math_renderer_nameappregistryhtml_inline_math_renderers)r8   r:   rD  r   visitr   r#   r#   r$   
visit_math"  s    zHTML5Translator.visit_mathc             C   s.   | j j}| j jjj| \}}|r*|| | d S )N)r'   rE  rF  rG  rH  )r8   r:   rD  r   r   departr#   r#   r$   depart_math'  s    zHTML5Translator.depart_mathc             C   s*   | j j}| j jjj| \}}|| | d S )N)r'   rE  rF  rG  html_block_math_renderers)r8   r:   rD  r   rI  r   r#   r#   r$   visit_math_block-  s    z HTML5Translator.visit_math_blockc             C   s.   | j j}| j jjj| \}}|r*|| | d S )N)r'   rE  rF  rG  rM  )r8   r:   rD  r   r   rK  r#   r#   r$   depart_math_block2  s    z!HTML5Translator.depart_math_blockc             C   sL   t jdtdd x6|d dd D ]"}| jd|  |d | q"W dS )aZ  Generate hyperlink targets for tables.

        Original visit_table() generates hyperlink targets inside table tags
        (<table>) if multiple IDs are assigned to listings.
        That is invalid DOM structure.  (This is a bug of docutils <= 0.13.1)

        This exports hyperlink targets before tables to make valid DOM structure.
        z*generate_targets_for_table() is deprecatedr=  )
stacklevelr   rF   Nz<span id="%s"></span>)warningswarnr   r=   r<   remove)r8   r:   idr#   r#   r$   generate_targets_for_table8  s
    	
z*HTML5Translator.generate_targets_for_table)r   c             C   s   t jdtdd | jd S )Nz"_fieldlist_row_index is deprecatedr=  )rP  r   )rQ  rR  r   r6   )r8   r#   r#   r$   _fieldlist_row_indexG  s    
z$HTML5Translator._fieldlist_row_indexc             C   s   t jdtdd | jd S )Nz_table_row_index is deprecatedr=  )rP  r   )rQ  rR  r   r5   )r8   r#   r#   r$   _table_row_indexM  s    
z HTML5Translator._table_row_index)r*   )N)r*   )r*   )r*   )r*   )__name__
__module____qualname____doc____annotations__setr(   r   r   r   r)   r   r,   r	   r>   r@   rC   rD   rG   rJ   rK   rM   rO   rP   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   rc   rd   rg   rh   ri   rj   rm   rn   rq   rr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rI   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r	  r
  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r!  r"  r$  r%  r&  r'  r(  r)  r*  r+  r,  r-  r/  r0  r2  r3  r;  r<  r@  rA  rB  rC  rJ  rL  rN  rO  rU  rk   rV  rW  __classcell__r#   r#   )r9   r$   r&   -   s  

		
	+	r&   )0r[  r   r   r   urllib.parser   rQ  typingr   r   r   r   r   r   r6  r   Zdocutils.nodesr	   r
   r   Zdocutils.writers.html5_polyglotr   ZBaseTranslatorZsphinxr   Zsphinx.buildersr   Zsphinx.deprecationr   Zsphinx.localer   r   r   Zsphinx.utilr   Zsphinx.util.docutilsr   Zsphinx.util.imagesr   Zsphinx.builders.htmlr   	getLoggerrX  r   r   r   r%   r&   r#   r#   r#   r$   <module>   s*    
