B
    öÀ„\½~  ã               @   sª   d Z ddlZddlZddlZddl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 ddlmZmZmZ dd	lmZ dd
lmZ e e¡ZG dd„ de	ƒZdS )zñ
    sphinx.writers.html5
    ~~~~~~~~~~~~~~~~~~~~

    Experimental docutils writers for HTML5 handling Sphinx' custom nodes.

    :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.
é    N)Únodes)ÚHTMLTranslator)Ústring_types)Úaddnodes)ÚRemovedInSphinx30Warning)ÚadmonitionlabelsÚ_Ú__)Úlogging)Úget_image_sizec               @   sÂ  e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ Zd:d;„ Z d<d=„ Z!d>d?„ Z"d@dA„ Z#dBdC„ Z$dêdEdF„Z%dGdH„ Z&dIdJ„ Z'dKdL„ Z(dMdN„ Z)dOdP„ Z*dQdR„ Z+dSdT„ Z,dUdV„ Z-dWdX„ Z.dYdZ„ Z/d[d\„ Z0d]d^„ Z1d_d`„ Z2dadb„ Z3dcdd„ Z4dedf„ Z5dgdh„ Z6didj„ Z7dkdl„ Z8dmdn„ Z9dodp„ Z:dqdr„ Z;dsdt„ Z<dudv„ Z=dwdx„ Z>dydz„ Z?d{d|„ Z@d}d~„ ZAdd€„ ZBdd‚„ ZCdƒd„„ ZDd…d†„ ZEd‡dˆ„ ZFd‰dŠ„ ZGd‹dŒ„ ZHddŽ„ ZIdd„ ZJd‘d’„ ZKd“d”„ ZLd•d–„ ZMd—d˜„ ZNd™dš„ ZOd›dœ„ ZPddž„ ZQdŸd „ ZRd¡d¢„ ZSd£d¤„ ZTd¥d¦„ ZUd§d¨„ ZVd©dª„ ZWd«d¬„ ZXd­d®„ ZYd¯d°„ ZZd±d²„ Z[d³d´„ Z\dµd¶„ Z]d·d¸„ Z^d¹dº„ Z_d»d¼„ Z`d½d¾„ Zad¿dÀ„ ZbdÁdÂ„ ZcdÃdÄ„ ZddÅdÆ„ ZedÇdÈ„ ZfdÉdÊ„ ZgdËdÌ„ ZhdÍdÎ„ ZidÏdÐ„ ZjdÑdÒ„ ZkdÓdÔ„ ZldÕdÖ„ Zmdëd×dØ„ZndìdÙdÚ„ZodídÛdÜ„ZpdîdÝdÞ„Zqdßdà„ Zresdádâ„ ƒZtesdãdä„ ƒZuesdådæ„ ƒZvesdçdè„ ƒZwdéS )ïÚHTML5Translatorz%
    Our custom HTML translator.
    c             O   s”   t j| f|ž|Ž |j| _|| _|jg| _|jj| _d| _|jj	| _
t| j
tƒs`| j
rZdp\d| _
|  | j
¡| _
|jj| _d| _d| _d| _d| _d S )Nr   õ   Â¶Ú )ÚBaseTranslatorÚ__init__ÚhighlighterÚbuilderÚcurrent_docnameÚdocnamesÚconfigÚmanpages_urlÚprotect_literal_textZhtml_add_permalinksÚpermalink_textÚ
isinstancer   ÚencodeZhtml_secnumber_suffixÚsecnumber_suffixÚparam_separatorÚoptional_param_levelÚ_table_row_indexÚrequired_params_left)Úselfr   ÚargsÚkwds© r#   ú3lib/python3.7/site-packages/sphinx/writers/html5.pyr   ,   s    



zHTML5Translator.__init__c             C   s(   | j  |d ¡ | j d|d  ¡ d S )NÚdocnamez<span id="document-%s"></span>)r   ÚappendÚbody)r    Únoder#   r#   r$   Úvisit_start_of_file?   s    z#HTML5Translator.visit_start_of_filec             C   s   | j  ¡  d S )N)r   Úpop)r    r(   r#   r#   r$   Údepart_start_of_fileE   s    z$HTML5Translator.depart_start_of_filec             C   s    | j  | j|d|d d¡ d S )NZdlÚobjtype)ÚCLASS)r'   r&   Ústarttag)r    r(   r#   r#   r$   Ú
visit_descI   s    zHTML5Translator.visit_descc             C   s   | j  d¡ d S )Nz</dl>

)r'   r&   )r    r(   r#   r#   r$   Údepart_descM   s    zHTML5Translator.depart_descc             C   sN   | j  |  |d¡¡ |jd dkrJ|d rJ|d rJ| j  d|d d  ¡ d S )NZdtr,   ZdescribeÚidsÚfirstz<!--[%s]-->r   )r'   r&   r.   Úparent)r    r(   r#   r#   r$   Úvisit_desc_signatureQ   s    z$HTML5Translator.visit_desc_signaturec             C   s*   |  d¡s|  |tdƒ¡ | j d¡ d S )NZis_multilinezPermalink to this definitionz</dt>
)ÚgetÚadd_permalink_refr   r'   r&   )r    r(   r#   r#   r$   Údepart_desc_signatureZ   s    
z%HTML5Translator.depart_desc_signaturec             C   s   d S )Nr#   )r    r(   r#   r#   r$   Úvisit_desc_signature_line`   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 />)r5   r6   r3   r   r'   r&   )r    r(   r#   r#   r$   Údepart_desc_signature_lined   s    
z*HTML5Translator.depart_desc_signature_linec             C   s   | j  | j|dddd¡ d S )NÚcoder   Zdescclassname)r-   )r'   r&   r.   )r    r(   r#   r#   r$   Úvisit_desc_addnamek   s    z"HTML5Translator.visit_desc_addnamec             C   s   | j  d¡ d S )Nz</code>)r'   r&   )r    r(   r#   r#   r$   Údepart_desc_addnameo   s    z#HTML5Translator.depart_desc_addnamec             C   s   d S )Nr#   )r    r(   r#   r#   r$   Úvisit_desc_types   s    zHTML5Translator.visit_desc_typec             C   s   d S )Nr#   )r    r(   r#   r#   r$   Údepart_desc_typew   s    z HTML5Translator.depart_desc_typec             C   s   | j  d¡ d S )Nz
 &#x2192; )r'   r&   )r    r(   r#   r#   r$   Úvisit_desc_returns{   s    z"HTML5Translator.visit_desc_returnsc             C   s   d S )Nr#   )r    r(   r#   r#   r$   Údepart_desc_returns   s    z#HTML5Translator.depart_desc_returnsc             C   s   | j  | j|dddd¡ d S )Nr:   r   Zdescname)r-   )r'   r&   r.   )r    r(   r#   r#   r$   Úvisit_desc_nameƒ   s    zHTML5Translator.visit_desc_namec             C   s   | j  d¡ d S )Nz</code>)r'   r&   )r    r(   r#   r#   r$   Údepart_desc_name‡   s    z HTML5Translator.depart_desc_namec             C   s:   | j  d¡ d| _d| _tdd„ |jD ƒƒ| _|j| _d S )Nz <span class="sig-paren">(</span>é   r   c             S   s   g | ]}t |tjƒ‘qS r#   )r   r   Zdesc_parameter)Ú.0Úcr#   r#   r$   ú
<listcomp>‘   s   z<HTML5Translator.visit_desc_parameterlist.<locals>.<listcomp>)	r'   r&   Úfirst_paramr   ÚsumZchildrenr   Zchild_text_separatorr   )r    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&   )r    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   rC   Únoemphz<em>)rG   r   r'   r&   r   r   Úhasattr)r    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 )NrK   z</em>)rL   r'   r&   r   r   )r    r(   r#   r#   r$   Údepart_desc_parameterª   s    
z%HTML5Translator.depart_desc_parameterc             C   s   |  j d7  _ | j d¡ d S )NrC   z<span class="optional">[</span>)r   r'   r&   )r    r(   r#   r#   r$   Úvisit_desc_optional±   s    z#HTML5Translator.visit_desc_optionalc             C   s   |  j d8  _ | j d¡ d S )NrC   z<span class="optional">]</span>)r   r'   r&   )r    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)r-   )r'   r&   r.   )r    r(   r#   r#   r$   Úvisit_desc_annotation»   s    z%HTML5Translator.visit_desc_annotationc             C   s   | j  d¡ d S )Nz</em>)r'   r&   )r    r(   r#   r#   r$   Údepart_desc_annotation¿   s    z&HTML5Translator.depart_desc_annotationc             C   s   | j  |  |dd¡¡ d S )NZddr   )r'   r&   r.   )r    r(   r#   r#   r$   Úvisit_desc_contentÃ   s    z"HTML5Translator.visit_desc_contentc             C   s   | j  d¡ d S )Nz</dd>)r'   r&   )r    r(   r#   r#   r$   Údepart_desc_contentÇ   s    z#HTML5Translator.depart_desc_contentc             C   s    | j  | j|d|d d¡ d S )NÚdivÚtype)r-   )r'   r&   r.   )r    r(   r#   r#   r$   Úvisit_versionmodifiedË   s    z%HTML5Translator.visit_versionmodifiedc             C   s   | j  d¡ d S )Nz</div>
)r'   r&   )r    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s”tdƒ‚d|d  |d< t|jt	j
ƒsât|ƒd
krÎt|d t	jƒsÒt‚|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ÚclassZ	referenceZinternalÚrefuriz	 internalz	 externalú#Úhrefzmailto:rC   Zrefidz3References must have "refuri" or "refid" attribute.r   z image-referenceZreftitleÚtitleÚtargetÚar   Ú	secnumberz%sÚ.)r5   ÚsettingsÚcloak_email_addressesÚ
startswithZcloak_mailtoÚ	in_mailtoÚAssertionErrorr   r3   r   ZTextElementÚlenÚimager'   r&   r.   r   ÚjoinÚmapÚstr)r    r(   Úattsr#   r#   r$   Úvisit_referenceÔ   s0    
 
zHTML5Translator.visit_referencec             C   s   |   |¡ d S )N)rn   )r    r(   r#   r#   r$   Úvisit_number_referenceò   s    z&HTML5Translator.visit_number_referencec             C   s   |   |¡ d S )N)Údepart_reference)r    r(   r#   r#   r$   Údepart_number_referenceö   s    z'HTML5Translator.depart_number_referencec             C   s
   t j‚d S )N)r   ÚSkipNode)r    r(   r#   r#   r$   Úvisit_commentû   s    zHTML5Translator.visit_commentr   c             C   s<   | j  | j|dd| d¡ |r8| dt |t| ¡¡ d S )NrV   zadmonition )r-   r   )r'   r&   r.   Úinsertr   r^   r   )r    r(   Únamer#   r#   r$   Úvisit_admonition   s    
z HTML5Translator.visit_admonitionc             C   s   |   |d¡ d S )NZseealso)rv   )r    r(   r#   r#   r$   Úvisit_seealso  s    zHTML5Translator.visit_seealsoc             C   s   |   |¡ d S )N)Údepart_admonition)r    r(   r#   r#   r$   Údepart_seealso  s    zHTML5Translator.depart_seealsoc             C   sÜ   |  d¡r.| j d tt|d ƒ¡| j ¡ nªt|jt	j
ƒrØ| jjdkr~| jd }d||jd d f }|| jjkr d| }n"d	|jd d  }|| jjkr d
}| jj  |¡rØ| jj| }| j d tt|ƒ¡| j ¡ d S )Nra   rb   Ú
singlehtmléÿÿÿÿz%s/#%sr1   r   z%s/r\   r   )r5   r'   r&   rj   rk   rl   r   r   r3   r   Zsectionr   ru   r   Z
secnumbers)r    r(   r%   Z
anchornameÚnumbersr#   r#   r$   Úadd_secnumber  s     


zHTML5Translator.add_secnumberc                sh   ‡ fdd„}ˆ j jjd  |¡}|rdt|d ƒdkrRtdƒ|j }tj||d n|||d d ƒ d S )Nc                s´   ˆ j jdkr dˆ jd | f }n| }|ˆ j j |i ¡kr°ˆ j d¡ ˆ j jj | ¡}|d krtt	dƒ|  }t
 |¡ n<ˆ j j| | }ˆ j |d tt|ƒ¡ d ¡ ˆ j d¡ d S )	Nrz   z%s/%sr{   z<span class="caption-number">z#numfig_format is not defined for %srb   ú z</span>)r   ru   r   Z
fignumbersr5   r'   r&   r   Znumfig_formatr	   ÚloggerÚwarningrj   rk   rl   )ÚfigtypeZ	figure_idÚkeyÚprefixÚmsgr|   )r    r#   r$   Úappend_fignumber%  s     z7HTML5Translator.add_fignumber.<locals>.append_fignumberZstdr1   r   z Any IDs not assigned for %s node)Úlocation)	r   ÚenvZdomainsZget_enumerable_node_typerh   r	   Útagnamer   r€   )r    r(   r…   r   r„   r#   )r    r$   Úadd_fignumber#  s    zHTML5Translator.add_fignumberc             C   s>   |d r:| j r:| jjr:d}| j ||d d || j f ¡ d S )Nr1   z2<a class="headerlink" href="#%s" title="%s">%s</a>r   )r   r   Úadd_permalinksr'   r&   )r    r(   r^   Úformatr#   r#   r$   r6   ?  s    z!HTML5Translator.add_permalink_refc             C   s0   t |ƒdkr |d jdkr tj‚t | |¡ d S )NrC   r   Útoctree)rh   rˆ   r   rr   r   Úvisit_bullet_list)r    r(   r#   r#   r$   r   F  s    z!HTML5Translator.visit_bullet_listc             C   s@   t  | |¡ |  |¡ |  |j¡ t|jtjƒr<| j 	d¡ d S )Nz<span class="caption-text">)
r   Úvisit_titler}   r‰   r3   r   r   Útabler'   r&   )r    r(   r#   r#   r$   rŽ   N  s
    
zHTML5Translator.visit_titlec             C   sÜ   | j d }| jr²| jjr²|j d¡r²|jd r²| d¡rL|  |jtdƒ¡ qÌ| d¡r„| j	 
d|jd d  dtdƒ| jf  ¡ qÌt|jtjƒrÌ| j	 
d	¡ |  |jtd
ƒ¡ nt|jtjƒrÌ| j	 
d	¡ t | |¡ d S )Nr{   r1   z</hzPermalink to this headlinez</a></hz%</a><a class="headerlink" href="#%s" r   ztitle="%s">%sz</span>zPermalink to this table)Úcontextr   r   rŠ   r3   rL   re   r6   r   r'   r&   r   r   r   r   Údepart_title)r    r(   Z	close_tagr#   r#   r$   r‘   V  s"    


zHTML5Translator.depart_titlec             C   sÊ   |j | ¡ krt | |¡S | dd¡}| dd¡}| di ¡}| dd¡|d< || jjjkrh| jjj}ni }| j	j
|j |f||| jj|jfdœ|—Ž}| j|d	d
d| d}| j || d ¡ tj‚d S )NZlanguageÚdefaultÚlinenosFÚhighlight_argsZforce_highlightingZforce)Úoptsr“   r†   rV   r   zhighlight-%s notranslate)Úsuffixr-   z</div>
)Z	rawsourceÚastextr   Úvisit_literal_blockr5   r   r   Úhighlight_languageÚhighlight_optionsr   Zhighlight_blockr   Úliner.   r'   r&   r   rr   )r    r(   Zlangr“   r”   r•   Zhighlightedr.   r#   r#   r$   r˜   m  s     
z#HTML5Translator.visit_literal_blockc             C   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">Úspanr   zcaption-text)r-   )r   r3   r   Ú	containerr5   r'   r&   r   Úvisit_captionr‰   r.   )r    r(   r#   r#   r$   rŸ   †  s
    zHTML5Translator.visit_captionc             C   sÒ   | j  d¡ t|jtjƒr:|j d¡r:|  |jtdƒ¡ n`t|jtj	ƒrz|j 
tj¡}|rb|d pf|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 coder   zPermalink to this imagerŒ   zPermalink to this toctreez</div>
)r'   r&   r   r3   r   rž   r5   r6   r   ZfigureZtraverseri   r   Údepart_caption)r    r(   Zimage_nodesZtarget_noder#   r#   r$   r      s    zHTML5Translator.depart_captionc             C   s   |   |¡ d S )N)r˜   )r    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&   r.   )r    r(   r#   r#   r$   Úvisit_block_quote§  s    z!HTML5Translator.visit_block_quotec             C   s   | j  d¡ d S )Nz</div></blockquote>
)r'   r&   )r    r(   r#   r#   r$   Údepart_block_quote«  s    z"HTML5Translator.depart_block_quotec             C   sT   d|d kr(| j  | j|dddd¡ n(| j  | j|dddd¡ |  jd7  _d S )NÚkbdÚclassesr   zdocutils literal notranslate)r-   r:   rC   )r'   r&   r.   r   )r    r(   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>rC   z</code>)r'   r&   r   )r    r(   r#   r#   r$   Údepart_literalº  s    zHTML5Translator.depart_literalc             C   sâ   | j  |  |d¡¡ g }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
¡ qPW | j  d¡ tj‚d S )NZpreZ	tokennamec             s   s   | ]}t |ƒV  qd S )N)rh   )rD   ru   r#   r#   r$   ú	<genexpr>È  s    z7HTML5Translator.visit_productionlist.<locals>.<genexpr>Zstrongr   z</strong> ::= z%s     r~   Ú
z</pre>
)	r'   r&   r.   ÚmaxÚljustrh   Z	walkaboutr   rr   )r    r(   ÚnamesZ
productionÚmaxlenZlastnamer#   r#   r$   Úvisit_productionlistÂ  s"    


z$HTML5Translator.visit_productionlistc             C   s   d S )Nr#   )r    r(   r#   r#   r$   Údepart_productionlistÖ  s    z%HTML5Translator.depart_productionlistc             C   s   d S )Nr#   )r    r(   r#   r#   r$   Úvisit_productionÚ  s    z HTML5Translator.visit_productionc             C   s   d S )Nr#   )r    r(   r#   r#   r$   Údepart_productionÞ  s    z!HTML5Translator.depart_productionc             C   s    | j  | j|dddd ¡ d S )NÚpZcentered)r-   z<strong>)r'   r&   r.   )r    r(   r#   r#   r$   Úvisit_centeredâ  s    zHTML5Translator.visit_centeredc             C   s   | j  d¡ d S )Nz</strong></p>)r'   r&   )r    r(   r#   r#   r$   Údepart_centeredç  s    zHTML5Translator.depart_centeredc             C   s0   t |jtjƒrdS t |jtjƒr$dS t | |¡S )z:Determine if the <p> tags around paragraph can be omitted.F)r   r3   r   Zdesc_contentZversionmodifiedr   Úshould_be_compact_paragraph)r    r(   r#   r#   r$   rµ   ì  s
    z+HTML5Translator.should_be_compact_paragraphc             C   s   d S )Nr#   )r    r(   r#   r#   r$   Úvisit_compact_paragraph÷  s    z'HTML5Translator.visit_compact_paragraphc             C   s   d S )Nr#   )r    r(   r#   r#   r$   Údepart_compact_paragraphû  s    z(HTML5Translator.depart_compact_paragraphc             C   sÔ   dddœ}| j js | j d¡ n°d|krl|d  d7  < |d |d< | j | j|ddf|Ž¡ | j d	¡ ndd
|krÄ|d  d7  < t | j j|d
 ¡|d< | j | j|ddf|Ž¡ | j d	¡ n| j d¡ d S )Nzreference downloadr   )rZ   Zdownloadr[   rZ   z	 externalr]   r`   z</a>Úfilenamez	 internal)	r   Zdownload_supportr   r&   r'   r.   Ú	posixpathrj   Zdlpath)r    r(   rm   r#   r#   r$   Úvisit_download_referenceÿ  s    z(HTML5Translator.visit_download_referencec             C   s   | j  | j ¡ ¡ d S )N)r'   r&   r   r*   )r    r(   r#   r#   r$   Údepart_download_reference  s    z)HTML5Translator.depart_download_referencec             C   sv  |d }|| j jkr0t | j j| j j| ¡|d< |d }| ¡  d¡râd|i}d|krb|d |d< d|krv|d |d< | d|¡|d< d|kr¸| j 	d|d |d f ¡ | j
 	d	¡ n| j
 	d
¡ | j 	| j|dd
f|Ž¡ d S d|krfd|krþd|ksfttj | j j|¡ƒ}|d kr2tjtdƒ|d n4d|krLt|d ƒ|d< d|krft|d ƒ|d< t | |¡ d S )NÚuri)ÚsvgÚsvgzÚsrcÚwidthZheightZaltÚalignz!<div align="%s" class="align-%s">z</div>
r   ZimgZscalez7Could not obtain image size. :scale: option is ignored.)r†   r   rC   )r   Zimagesr¹   rj   ZimgpathÚlowerÚendswithr5   r'   r&   r   Zemptytagr   ÚosÚpathZsrcdirr   r€   r	   rl   r   Úvisit_image)r    r(   Zoldurir¼   rm   Úsizer#   r#   r$   rÆ     s<    






zHTML5Translator.visit_imagec             C   s6   |d   ¡  d¡r&| j | j ¡ ¡ nt | |¡ d S )Nr¼   )r½   r¾   )rÂ   rÃ   r'   r&   r   r*   r   Údepart_image)r    r(   r#   r#   r$   rÈ   B  s    zHTML5Translator.depart_imagec             C   s
   t j‚d S )N)r   rr   )r    r(   r#   r#   r$   Úvisit_toctreeI  s    zHTML5Translator.visit_toctreec             C   s
   t j‚d S )N)r   rr   )r    r(   r#   r#   r$   Úvisit_indexO  s    zHTML5Translator.visit_indexc             C   s
   t j‚d S )N)r   rr   )r    r(   r#   r#   r$   Úvisit_tabular_col_specS  s    z&HTML5Translator.visit_tabular_col_specc             C   s   d S )Nr#   )r    r(   r#   r#   r$   Úvisit_glossaryW  s    zHTML5Translator.visit_glossaryc             C   s   d S )Nr#   )r    r(   r#   r#   r$   Údepart_glossary[  s    zHTML5Translator.depart_glossaryc             C   s   d S )Nr#   )r    r(   r#   r#   r$   Ú
visit_acks_  s    zHTML5Translator.visit_acksc             C   s   d S )Nr#   )r    r(   r#   r#   r$   Údepart_acksc  s    zHTML5Translator.depart_acksc             C   s   | j  d¡ d S )Nz<table class="hlist"><tr>)r'   r&   )r    r(   r#   r#   r$   Úvisit_hlistg  s    zHTML5Translator.visit_hlistc             C   s   | j  d¡ d S )Nz</tr></table>
)r'   r&   )r    r(   r#   r#   r$   Údepart_hlistk  s    zHTML5Translator.depart_hlistc             C   s   | j  d¡ d S )Nz<td>)r'   r&   )r    r(   r#   r#   r$   Úvisit_hlistcolo  s    zHTML5Translator.visit_hlistcolc             C   s   | j  d¡ d S )Nz</td>)r'   r&   )r    r(   r#   r#   r$   Údepart_hlistcols  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;rC   r~   )r—   r   r   Zwords_and_spacesÚfindallÚstripr'   r&   rh   rf   rc   rd   Zcloak_email)r    r(   ÚtextZencodedÚtokenr#   r#   r$   Ú
visit_Textx  s    
"
zHTML5Translator.visit_Textc             C   s   |   |d¡ d S )NZnote)rv   )r    r(   r#   r#   r$   Ú
visit_noteŽ  s    zHTML5Translator.visit_notec             C   s   |   |¡ d S )N)rx   )r    r(   r#   r#   r$   Údepart_note’  s    zHTML5Translator.depart_notec             C   s   |   |d¡ d S )Nr€   )rv   )r    r(   r#   r#   r$   Úvisit_warning–  s    zHTML5Translator.visit_warningc             C   s   |   |¡ d S )N)rx   )r    r(   r#   r#   r$   Údepart_warningš  s    zHTML5Translator.depart_warningc             C   s   |   |d¡ d S )NZ	attention)rv   )r    r(   r#   r#   r$   Úvisit_attentionž  s    zHTML5Translator.visit_attentionc             C   s   |   |¡ d S )N)rx   )r    r(   r#   r#   r$   Údepart_attention¢  s    z HTML5Translator.depart_attentionc             C   s   |   |d¡ d S )NZcaution)rv   )r    r(   r#   r#   r$   Úvisit_caution¦  s    zHTML5Translator.visit_cautionc             C   s   |   |¡ d S )N)rx   )r    r(   r#   r#   r$   Údepart_cautionª  s    zHTML5Translator.depart_cautionc             C   s   |   |d¡ d S )NZdanger)rv   )r    r(   r#   r#   r$   Úvisit_danger®  s    zHTML5Translator.visit_dangerc             C   s   |   |¡ d S )N)rx   )r    r(   r#   r#   r$   Údepart_danger²  s    zHTML5Translator.depart_dangerc             C   s   |   |d¡ d S )NÚerror)rv   )r    r(   r#   r#   r$   Úvisit_error¶  s    zHTML5Translator.visit_errorc             C   s   |   |¡ d S )N)rx   )r    r(   r#   r#   r$   Údepart_errorº  s    zHTML5Translator.depart_errorc             C   s   |   |d¡ d S )NZhint)rv   )r    r(   r#   r#   r$   Ú
visit_hint¾  s    zHTML5Translator.visit_hintc             C   s   |   |¡ d S )N)rx   )r    r(   r#   r#   r$   Údepart_hintÂ  s    zHTML5Translator.depart_hintc             C   s   |   |d¡ d S )NZ	important)rv   )r    r(   r#   r#   r$   Úvisit_importantÆ  s    zHTML5Translator.visit_importantc             C   s   |   |¡ d S )N)rx   )r    r(   r#   r#   r$   Údepart_importantÊ  s    z HTML5Translator.depart_importantc             C   s   |   |d¡ d S )NZtip)rv   )r    r(   r#   r#   r$   Ú	visit_tipÎ  s    zHTML5Translator.visit_tipc             C   s   |   |¡ d S )N)rx   )r    r(   r#   r#   r$   Ú
depart_tipÒ  s    zHTML5Translator.depart_tipc             C   s
   |   |¡S )N)Zvisit_emphasis)r    r(   r#   r#   r$   Úvisit_literal_emphasisÖ  s    z&HTML5Translator.visit_literal_emphasisc             C   s
   |   |¡S )N)Zdepart_emphasis)r    r(   r#   r#   r$   Údepart_literal_emphasisÚ  s    z'HTML5Translator.depart_literal_emphasisc             C   s
   |   |¡S )N)Zvisit_strong)r    r(   r#   r#   r$   Úvisit_literal_strongÞ  s    z$HTML5Translator.visit_literal_strongc             C   s
   |   |¡S )N)Zdepart_strong)r    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explanationr^   Zabbrr   )rL   r'   r&   r.   )r    r(   Zattrsr#   r#   r$   Úvisit_abbreviationæ  s    
z"HTML5Translator.visit_abbreviationc             C   s   | j  d¡ d S )Nz</abbr>)r'   r&   )r    r(   r#   r#   r$   Údepart_abbreviationí  s    z#HTML5Translator.depart_abbreviationc             C   s4   |   |¡ | jr0| jjf t|ƒŽ|d< |  |¡ d S )Nr[   )rì   r   r‹   Údictrn   )r    r(   r#   r#   r$   Úvisit_manpageñ  s    
zHTML5Translator.visit_manpagec             C   s   | j r|  |¡ |  |¡ d S )N)r   rp   rí   )r    r(   r#   r#   r$   Údepart_manpageø  s    
zHTML5Translator.depart_manpagec             C   s<   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.
        r1   rC   Nz<span id="%s"></span>)r'   r&   Úremove)r    r(   Úidr#   r#   r$   Úgenerate_targets_for_table   s    
z*HTML5Translator.generate_targets_for_tablec             C   st   |   |¡ d| _dd„ | jj d¡D ƒ}| dd¡ d|krN| d|d  ¡ | j|dd	 |¡d
}| j	 |¡ d S )Nr   c             S   s   g | ]}|  d ¡‘qS )z 	
)rÕ   )rD   Úclsr#   r#   r$   rF     s   z/HTML5Translator.visit_table.<locals>.<listcomp>ú,ÚdocutilsrÁ   zalign-%sr   r~   )r-   )
r÷   r   rc   Ztable_styleÚsplitrt   r&   r.   rj   r'   )r    r(   r¥   Útagr#   r#   r$   Úvisit_table  s    
zHTML5Translator.visit_tablec             C   sZ   |  j d7  _ | j d dkr,|d  d¡ n|d  d¡ | j |  |dd¡¡ d|_d S )	NrC   é   r   r¥   zrow-evenzrow-oddZtrr   )r   r&   r'   r.   Úcolumn)r    r(   r#   r#   r$   Ú	visit_row  s    zHTML5Translator.visit_rowc             C   s   d| _ t | |¡S )Nr   )Ú_fieldlist_row_indexr   Úvisit_field_list)r    r(   r#   r#   r$   r  &  s    z HTML5Translator.visit_field_listc             C   s>   |  j d7  _ | j d dkr,|d  d¡ n|d  d¡ |S )NrC   rþ   r   r¥   z
field-evenz	field-odd)r  r&   )r    r(   r#   r#   r$   Úvisit_field+  s
    zHTML5Translator.visit_fieldc             C   s*   | j j}| j jjj| \}}|| |ƒ d S )N)r   Úmath_renderer_nameÚappÚregistryÚhtml_inline_math_renderers)r    r(   Úmath_envru   Úvisitr   r#   r#   r$   Ú
visit_math4  s    zHTML5Translator.visit_mathc             C   s.   | j j}| j jjj| \}}|r*|| |ƒ d S )N)r   r  r  r  r  )r    r(   r  ru   r   Údepartr#   r#   r$   Údepart_math:  s    zHTML5Translator.depart_mathc             C   s*   | j j}| j jjj| \}}|| |ƒ d S )N)r   r  r  r  Úhtml_block_math_renderers)r    r(   r  ru   r	  r   r#   r#   r$   Úvisit_math_blockA  s    z HTML5Translator.visit_math_blockc             C   s.   | j j}| j jjj| \}}|r*|| |ƒ d S )N)r   r  r  r  r  )r    r(   r  ru   r   r  r#   r#   r$   Údepart_math_blockG  s    z!HTML5Translator.depart_math_blockc             C   s   t d|jj ƒ‚d S )NzUnknown node: )ÚNotImplementedErrorÚ	__class__Ú__name__)r    r(   r#   r#   r$   Úunknown_visitN  s    zHTML5Translator.unknown_visitc             C   s   t jdtdd | jjjS )Nz+HTMLTranslator.highlightlang is deprecated.rþ   )Ú
stacklevel)ÚwarningsÚwarnr   r   r   r™   )r    r#   r#   r$   ÚhighlightlangT  s    
zHTML5Translator.highlightlangc             C   s   t jdtdd | jjjS )Nz0HTMLTranslator.highlightlang_base is deprecated.rþ   )r  )r  r  r   r   r   r™   )r    r#   r#   r$   Úhighlightlang_base[  s    
z"HTML5Translator.highlightlang_basec             C   s   t jdtdd | jjjS )Nz+HTMLTranslator.highlightopts is deprecated.rþ   )r  )r  r  r   r   r   rš   )r    r#   r#   r$   Úhighlightoptsb  s    
zHTML5Translator.highlightoptsc             C   s   t jdtdd tjS )Nz6HTMLTranslator.highlightlinenothreshold is deprecated.rþ   )r  )r  r  r   ÚsysÚmaxsize)r    r#   r#   r$   Úhighlightlinenothresholdi  s    
z(HTML5Translator.highlightlinenothresholdN)r   )r   )r   )r   )r   )xr  Ú
__module__Ú__qualname__Ú__doc__r   r)   r+   r/   r0   r4   r7   r8   r9   r;   r<   r=   r>   r?   r@   rA   rB   rI   rJ   rM   rN   rO   rP   rR   rS   rT   rU   rX   rY   rn   ro   rq   rs   rv   rw   ry   r}   r‰   r6   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  r  r
  r  r  r  r  rQ   r  r  r  r  r#   r#   r#   r$   r   '   sè   	


	
*
	



r   )r  rÄ   r¹   r  r  rú   r   Zdocutils.writers.html5_polyglotr   r   Zsixr   Zsphinxr   Zsphinx.deprecationr   Zsphinx.localer   r   r	   Zsphinx.utilr
   Zsphinx.util.imagesr   Z	getLoggerr  r   r   r#   r#   r#   r$   Ú<module>
   s   
