B
    öÀ„\QÝ  ã               @   sð   d Z ddlZddlZddlmZ ddlmZmZ ddlm	Z	 ddl
mZ ddl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 e e¡ZdZde d Zdd„ Z ddd„Z!G dd„ dej"ƒZ#G dd„ dej$ƒZ%dS )zÒ
    sphinx.writers.texinfo
    ~~~~~~~~~~~~~~~~~~~~~~

    Custom docutils writer for Texinfo.

    :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.
é    N)Úpath)ÚnodesÚwriters)Ú
itervalues)Úrange)ÚaddnodesÚ__display_version__)ÚExtensionError)ÚadmonitionlabelsÚ_Ú__)Úlogging)Úformat_date)Úcollected_footnotezn@quotation
%(project)s %(release)s, %(date)s

%(author)s

Copyright @copyright{} %(copyright)s
@end quotation
z‰\input texinfo   @c -*-texinfo-*-
@c %%**start of header
@setfilename %(filename)s
@documentencoding UTF-8
@ifinfo
@*Generated by Sphinx a  .@*
@end ifinfo
@settitle %(title)s
@defindex ge
@paragraphindent %(paragraphindent)s
@exampleindent %(exampleindent)s
@finalout
%(direntry)s
@definfoenclose strong,`,'
@definfoenclose emph,`,'
@c %%**end of header

@copying
%(copying)s
@end copying

@titlepage
@title %(title)s
@insertcopying
@end titlepage
@contents

@c %%** start of user preamble
%(preamble)s
@c %%** end of user preamble

@ifnottex
@node Top
@top %(title)s
@insertcopying
@end ifnottex

@c %%**start of body
%(body)s
@c %%**end of body
@bye
c             C   s>   g }x4| j D ]*}t|tjƒr(| |¡ q| t|ƒ¡ qW |S )z7Return a list of subsections for the given ``section``.)ÚchildrenÚ
isinstancer   ÚsectionÚappendÚextendÚfind_subsections)r   ÚresultZchild© r   ú5lib/python3.7/site-packages/sphinx/writers/texinfo.pyr   Z   s    
r   c             C   sL   |   |¡}x2t|ƒD ]&\}}tdd„ |D ƒƒr| ¡ ||< qW |pDd |¡S )z_Like string.capwords() but does not capitalize words that already
    contain a capital letter.c             s   s   | ]}|  ¡ V  qd S )N)Úislower)Ú.0Úxr   r   r   ú	<genexpr>l   s    z!smart_capwords.<locals>.<genexpr>ú )ÚsplitÚ	enumerateÚallÚ
capitalizeÚjoin)ÚsÚsepZwordsÚiZwordr   r   r   Úsmart_capwordsf   s
    
r&   c            	   @   sr   e Zd ZdZdZddddgddifd	d
gddifddgddifddgddifffZi ZdZdZdd„ Z	dd„ Z
dS )ÚTexinfoWriterz0Texinfo writer for generating Texinfo documents.)ÚtexinfoÚtexizTexinfo Specific OptionsNzName of the Info filez--texinfo-filenameÚdefaultÚ z	Dir entryz--texinfo-dir-entryZDescriptionz--texinfo-dir-descriptionZCategoryz--texinfo-dir-categoryZMiscellaneous)ÚoutputÚfragmentc             C   s   t j | ¡ || _d S )N)r   ÚWriterÚ__init__Úbuilder)Úselfr0   r   r   r   r/   ƒ   s    zTexinfoWriter.__init__c             C   sR   | j  | j| j ¡ | _}| j |¡ | ¡  x | jD ]}t| |t||ƒƒ q4W d S )N)	r0   Zcreate_translatorÚdocumentÚvisitorÚ	walkaboutÚfinishÚvisitor_attributesÚsetattrÚgetattr)r1   r3   Úattrr   r   r   Ú	translateˆ   s
    zTexinfoWriter.translate)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Z	supportedZsettings_specZsettings_defaultsr,   r6   r/   r:   r   r   r   r   r'   q   s   r'   c               @   sò  e Zd ZdZddddddddddd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e d¡f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/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Z d;Z!d<Z"d=d>„ Z#d?d@„ Z$dAdB„ Z%dCdD„ Z&dEdF„ Z'dGdH„ Z(dIdJ„ Z)dKdL„ Z*dMdN„ Z+dOdP„ Z,dQdR„ Z-dSdT„ Z.dUdV„ Z/dWdX„ Z0dYdZ„ Z1d[d\„ Z2d]d^„ Z3d_d`„ Z4e3Z5e4Z6dadb„ Z7dcdd„ Z8dedf„ Z9dgdh„ Z:didj„ Z;dkdl„ Z<dmdn„ Z=dodp„ Z>dqdr„ Z?dsdt„ Z@dudv„ ZAdwdx„ ZBdydz„ ZCd{d|„ ZDd}d~„ ZEdd€„ ZFdd‚„ ZGdƒd„„ ZHd…d†„ ZId‡dˆ„ ZJd‰dŠ„ ZKd‹dŒ„ ZLddŽ„ ZMdd„ ZNd‘d’„ ZOd“d”„ ZPd•d–„ ZQd—d˜„ ZRd™dš„ ZSd›dœ„ ZTddž„ 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Ð„ ZndÑdÒ„ ZodÓdÔ„ ZpdÕdÖ„ 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ö„ Zd÷dø„ Z‚dÁdùdú„Zƒdûdü„ Z„dýdþ„ Z…e…dÿƒZ†e„Z‡e…d ƒZˆe„Z‰e…dƒZŠe„Z‹e…dƒZŒe„Ze…dƒZŽe„Ze…dƒZe„Z‘e…dƒZ’e„Z“e…dƒZ”e„Z•e…dƒZ–e„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«d0d1„ Z¬d2d3„ Z­d4d5„ Z®d6d7„ Z¯d8d9„ Z°d:d;„ Z±d<d=„ Z²d>d?„ Z³d@dA„ Z´dBdC„ ZµdDdE„ Z¶dFdG„ Z·dHdI„ Z¸dJdK„ Z¹dLdM„ ZºdNdO„ Z»dPdQ„ Z¼dRdS„ Z½dTdU„ Z¾dVdW„ Z¿dXdY„ ZÀdZd[„ ZÁd\d]„ ZÂd^d_„ ZÃd`da„ ZÄdbdc„ ZÅddde„ ZÆdfdg„ ZÇdhdi„ ZÈdjdk„ ZÉdldm„ ZÊdndo„ ZËdpdq„ ZÌdrds„ ZÍdtdu„ ZÎdvdw„ ZÏdxdy„ ZÐdz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è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ÀS (Â  ÚTexinfoTranslatorFr+   é   r   )ÚauthorÚbodyÚcopyingÚdateÚdirentryZexampleindentÚfilenameZparagraphindentZpreambleÚprojectÚreleaseÚtitlec             C   sÀ   t j | |¡ || _|  ¡  tƒ | _tƒ | _g | _i | _	i | _
i | _i | _|  ¡  |  ¡  |  ¡  |  ¡  g | _g | _d | _d| _d| _tƒ | _d| _d| _g | _g | _d| _tƒ | _d | _d S )Nr   F)r   ÚNodeVisitorr/   r0   Úinit_settingsÚsetÚwritten_idsÚreferenced_idsÚindicesÚ	short_idsÚ
node_namesÚ
node_menusÚrellinksÚcollect_indicesÚcollect_node_namesÚcollect_node_menusÚcollect_rellinksrB   ÚcontextÚprevious_sectionÚsection_levelÚ
seen_titleÚnext_section_idsÚescape_newlinesÚescape_hyphensÚcurfilestackÚfootnotestackÚin_footnoteÚhandled_abbrsÚ	colwidths)r1   r2   r0   r   r   r   r/   ¤   s6    zTexinfoTranslator.__init__c             C   sÊ   | j d kr|  d¡ xN| jD ]D}|\}}t|g| j|  ƒ}| j d| ¡ | j d||f ¡ qW x2| jr–| j ¡ }|| j	krf| j d|df ¡ qfW |  
¡  d | j¡| _| j| jd< t| j | _d S )NÚTopz
@node %s,%s,%s,%s
z@unnumbered %s

%s
z@anchor{%s}@w{%s}
z                              r+   rB   )rY   Úadd_menurO   ÚtuplerS   rB   r   rN   ÚpoprM   Ú
ensure_eolr"   r-   ÚelementsÚTEMPLATEr,   )r1   ÚindexÚnameÚcontentÚpointersÚrr   r   r   r5   Ì   s    



zTexinfoTranslator.finishc             C   sˆ  | j j }| _| j ¡  }| _| |j|j|j|  	| j
jj¡|  	| j
jj¡|  	| j
jj¡|  	| j
jjp„t| j
jjpxtdƒ| j
jjd¡dœ¡ d }|d }|s¼| j  tj¡}|r¸| ¡ pºd}|  |¡pÈd|d< |d s&| j  d¡pæd|d< |d d	d … d
kr|d d d	… |d< |d  d7  < |jrl|  |  |j¡d|d  |  |j¡¡}d|  |j¡|f |d< t| |d< | |j ¡ d S )Nz	%b %d, %Y)Úlanguage)rI   rA   rF   rH   rG   Ú	copyrightrD   rI   z
<untitled>rF   ÚsourceZuntitledéüÿÿÿ)z.txtz.rstz.infoz(%s)z*@dircategory %s
@direntry
%s@end direntry
rE   rC   )!r2   ÚsettingsÚdefault_elementsÚcopyri   ÚupdaterI   rA   Ztexinfo_filenameÚescaper0   ÚconfigrH   rG   rq   Ztodayr   Z	today_fmtr   rp   Ú	next_noder   ÚastextÚ	escape_idÚgetZtexinfo_dir_entryÚformat_menu_entryÚescape_menuÚ
escape_argZtexinfo_dir_descriptionZtexinfo_dir_categoryÚCOPYINGZtexinfo_elements)r1   rt   ri   rI   Úentryr   r   r   rK   â   s@    


zTexinfoTranslator.init_settingsc                s€   ‡fdd„‰ dˆj d< ˆ dƒ ˆ dƒ ‡ fdd„ˆjD ƒˆ_x>ˆj  tj¡D ],}| tj¡}|rh| ¡ pjd}ˆ |ƒ|d< qLW d	S )
zeGenerates a unique id for each section.

        Assigns the attribute ``node_name`` to each section.c                sf   ˆ   | ¡}d\}}x0|| ˆ jks0|| ˆ jkrB|d7 }d| }qW ||7 }ˆ j |¡ | ˆ j|< |S )N)é   r+   rƒ   z<%s>)r|   rM   rQ   Úadd)rl   Znode_idZnthÚsuffix)r1   r   r   Úadd_node_name  s    

z;TexinfoTranslator.collect_node_names.<locals>.add_node_namerd   Ú	node_nameÚtopc                s   g | ]\}}ˆ |ƒ|f‘qS r   r   )r   rl   rm   )r†   r   r   ú
<listcomp>'  s   z8TexinfoTranslator.collect_node_names.<locals>.<listcomp>z
<untitled>N)r2   rO   Útraverser   r   rz   ZTitularr{   )r1   r   rI   rl   r   )r†   r1   r   rU     s    

z$TexinfoTranslator.collect_node_namesc             C   s   | j }xP| jg| j tj¡ D ]6}d|kr2|d s6t‚dd„ t|ƒD ƒ}|||d < qW | j tj¡}|rp|j	pt| j}t
|tjtjfƒsŽ| j}|| jk	rÒ||d  }||d dd… 7 }||d< ||d = d|d< x(| jD ]\}}g ||< |d  |¡ qÚW dS )z1Collect the menu entries for each "node" section.r‡   c             S   s   g | ]}|d  ‘qS )r‡   r   )r   r#   r   r   r   r‰   6  s    z8TexinfoTranslator.collect_node_menus.<locals>.<listcomp>rd   rƒ   N)rR   r2   rŠ   r   r   ÚAssertionErrorr   rz   rI   Úparentr   rO   r   )r1   rR   ÚnodeÚentriesrI   rˆ   rl   rm   r   r   r   rV   /  s&    

z$TexinfoTranslator.collect_node_menusc             C   s  | j }| j}x"| ¡ D ]\}}dddg||< qW x.| ¡ D ]"\}}x|D ]}||| d< qHW q:W xj| ¡ D ]^\}}xTt|ƒD ]H\}}|dkr ||d  || d< |t|ƒd kr|||d  || d< q|W qjW y|d d }W n tk
rð   Y nX ||d d< d|| d< dS )z@Collect the relative links (next, previous, up) for each "node".r+   é   r   rƒ   rd   N)rS   rR   Úitemsr   ÚlenÚ
IndexError)r1   rS   rR   ÚidrŽ   Úer%   Úfirstr   r   r   rW   H  s&    
z"TexinfoTranslator.collect_rellinksc             C   s@   |  dd¡}|  dd¡}|  dd¡}|  dd¡}|  d	d
¡}|S )z8Return a string with Texinfo command characters escaped.ú@z@@Ú{z@{Ú}z@}z``z`@w{`}z''z'@w{'})Úreplace)r1   r#   r   r   r   rx   j  s    zTexinfoTranslator.escapec             C   s,   |   |¡}| dd¡}d | ¡ ¡ ¡ }|S )zVReturn an escaped string suitable for use as an argument
        to a Texinfo command.ú,z@comma{}r   )rx   r™   r"   r   Ústrip)r1   r#   r   r   r   r€   u  s    
zTexinfoTranslator.escape_argc             C   sR   d}x|D ]}|  |d¡}q
W t d|¡r6|  dd¡}d | ¡ ¡ ¡ }|  |¡S )z=Return an escaped string suitable for node names and anchors.z,:()r   z[^ .]Ú.)r™   ÚreÚsearchr"   r   r›   rx   )r1   r#   Z	bad_charsZbcr   r   r   r|   €  s    
zTexinfoTranslator.escape_idc             C   s,   |   |¡}| dd¡}d | ¡ ¡ ¡ }|S )z3Return an escaped string suitable for menu entries.ú:ú;r   )r€   r™   r"   r   r›   )r1   r#   r   r   r   r   Œ  s    
zTexinfoTranslator.escape_menuc             C   s,   | j r(| j d dd… dkr(| j  d¡ dS )z7Ensure the last line in body is terminated by new line.éÿÿÿÿNÚ
)rB   r   )r1   r   r   r   rh   ”  s    zTexinfoTranslator.ensure_eolc                sn   ||krd|f }nd||f }t dt|ƒd d fƒ‰ d ‡ fdd„tj|dˆ  d	D ƒ¡}|| ¡  d S )
Nz* %s:: z
* %s: %s. é   r@   éN   r¢   c             3   s   | ]}d ˆ  | V  qdS )r   Nr   )r   Úl)Úoffsetr   r   r   ¡  s    z6TexinfoTranslator.format_menu_entry.<locals>.<genexpr>)Úwidth)Úmaxr‘   r"   ÚtextwrapZwrapr›   )r1   rl   r‡   Údescr#   Zwdescr   )r¦   r   r~   š  s    z#TexinfoTranslator.format_menu_entryz
\s+---?\s+c          	   C   sŒ   x†|D ]~}| j | }y| |d¡}W n tk
r>   |g}Y nX t|ƒdkrV|\}}nd}|  |¡}|  |¡}| j |  |||¡¡ qW d S )Nrƒ   r   r+   )	rQ   r   Ú	TypeErrorr‘   r   rx   rB   r   r~   )r1   rŽ   Zregr‚   rl   Úpartsrª   r   r   r   Úadd_menu_entries¥  s    




z"TexinfoTranslator.add_menu_entriesc                s˜   ˆj | }|sd S ˆj d¡ ˆ |¡ |dksHˆj |d  rHˆjjjrXˆj d¡ d S ‡ ‡fdd„‰ ˆj d¡ x|D ]}ˆ |ƒ qxW ˆj d¡ d S )	Nz
@menu
rd   r   z
@end menu
c                sR   ˆj |  }|sd S ˆj dˆ ˆj|  ¡ ¡ ˆ |¡ x|D ]}ˆ |ƒ q>W d S )Nz
%s

)rR   rB   r   rx   rQ   r­   )rl   rŽ   Zsubentry)Ú_add_detailed_menur1   r   r   r®   Ä  s    


z6TexinfoTranslator.add_menu.<locals>._add_detailed_menuz0
@detailmenu
 --- The Detailed Node Listing ---
z
@end detailmenu
@end menu
)rR   rB   r   r­   r0   ry   Ztexinfo_no_detailmenu)r1   r‡   rŽ   r‚   r   )r®   r1   r   re   ·  s    




zTexinfoTranslator.add_menuc             C   sX   t  d|¡}|s|S |}| ¡ d d… \}}|r8|dkr<dS |dkrTdt|ƒd  }|S )Nz(\d*\.?\d*)\s*(\S*)r   Zpxr+   ú%z%d.0ptgDIíêº@)r   ÚmatchÚgroupsÚfloat)r1   Z	width_strr°   ZresZamountZunitr   r   r   Útex_image_lengthÕ  s    z"TexinfoTranslator.tex_image_lengthc       	         sÔ   ‡ fdd„}ˆ j jj}|ršx~tˆ j jjƒD ]l}xf|jD ]\}d|j|jf }t|t	ƒr^||kr^q6||ƒ 
ˆ j j¡\}}|szq6ˆ j |j|||ƒf¡ q6W q*W x4ˆ j jD ](}ˆ j jj| r¤ˆ j tdƒdf¡ P q¤W d S )Nc       
         s’   dg}xv| D ]n\}}xd|D ]\}|d s(qˆ   |d ¡}ˆ  d|d |d f ¡}ˆ  |d ¡}ˆ  |||¡}	| |	¡ qW qW | d¡ d |¡S )	Nz
@menu
é   r   z%s:%sr   é   z
@end menu
r+   )r   Úget_short_idr€   r~   r   r"   )
rm   Ú	collapsedZretZletterrŽ   r‚   rl   Úsidrª   Úme)r1   r   r   Úgenerateç  s    

z3TexinfoTranslator.collect_indices.<locals>.generatez%s-%sZIndexz
@printindex ge
)r0   ry   Ztexinfo_domain_indicesr   ÚenvZdomainsrO   rl   r   Úlistrº   Zdocnamesr   Z	localnameZindexentriesr   )	r1   rº   Zindices_configÚdomainZindexclsZ	indexnamerm   r·   Údocnamer   )r1   r   rT   å  s&    


z!TexinfoTranslator.collect_indicesc                sJ   ‡ fdd„‰ i }x4ˆ |ƒD ](}|j d  ¡  ¡ }t|j Ž dg||< qW |S )Nc             3   sN   t | tjƒr| V  n6x4| jD ]*}t |tjƒr.qxˆ |ƒD ]
}|V  q8W qW d S )N)r   r   Zfootnoter   r   Zstart_of_file)ÚnÚcÚk)Úfootnotes_underr   r   rÂ     s    z<TexinfoTranslator.collect_footnotes.<locals>.footnotes_underr   F)r   r{   r›   r   )r1   r   ZfnotesÚfnÚnumr   )rÂ   r   Úcollect_footnotes  s    
z#TexinfoTranslator.collect_footnotesc             C   sH   y| j | }W n4 tk
rB   tt| j ƒƒdd… }|| j |< Y nX |S )z-Return a shorter 'id' associated with ``id``.r   N)rP   ÚKeyErrorÚhexr‘   )r1   r“   r¸   r   r   r   r¶   !  s    zTexinfoTranslator.get_short_idc             C   sp   |  d¡rd S | jd d | }|  |¡}|  |¡}x6||fD ]*}|| jkr>| j d| ¡ | j |¡ q>W d S )Nzindex-r¡   rŸ   z@anchor{%s})Ú
startswithr_   r|   r¶   rM   rB   r   r„   )r1   r“   r   Zeidr¸   r   r   r   Ú
add_anchor-  s    



zTexinfoTranslator.add_anchorc             C   sJ   |   |¡}|  |¡}| j d||f ¡ | j |¡ | j |  |¡¡ d S )Nz@ref{%s,,%s})r   r¶   rB   r   rN   r„   r|   )r1   r“   rl   r   r¸   r   r   r   Úadd_xref9  s
    

zTexinfoTranslator.add_xrefc             C   s>   | j  |  |¡¡ | j | dd¡¡ d|kr:|  d|¡ d S )Nr¾   r+   z:doc)r`   r   rÅ   r_   r}   rÉ   )r1   r   r   r   r   Úvisit_documentC  s    z TexinfoTranslator.visit_documentc             C   s   | j  ¡  | j ¡  d S )N)r`   rg   r_   )r1   r   r   r   r   Údepart_documentJ  s    
z!TexinfoTranslator.depart_documentc             C   sB   |   | ¡ ¡}| jr | dd¡}| jr2| dd¡}| j |¡ d S )Nr¢   r   ú-z@w{-})rx   r{   r]   r™   r^   rB   r   )r1   r   r#   r   r   r   Ú
visit_TextO  s    zTexinfoTranslator.visit_Textc             C   s   d S )Nr   )r1   r   r   r   r   Údepart_TextY  s    zTexinfoTranslator.depart_Textc             C   s®   | j  | dg ¡¡ | jsd S | jr6|  | jd ¡ n
|  d¡ |d }t|g| j|  ƒ}| j 	d| ¡ xt
| j ƒD ]}|  ||¡ qxW | j  ¡  || _|  jd7  _d S )NÚidsr‡   rd   z
@node %s,%s,%s,%s
rƒ   )r\   rw   r}   r[   rY   re   rf   rS   rB   r   ÚsortedrÉ   ÚclearrZ   )r1   r   r‡   rn   r“   r   r   r   Úvisit_section]  s    

zTexinfoTranslator.visit_sectionc             C   s   |  j d8  _ d S )Nrƒ   )rZ   )r1   r   r   r   r   Údepart_sectionq  s    z TexinfoTranslator.depart_section)z@unnumberedz@chapterz@sectionz@subsectionz@subsubsection)z@headingz@subheadingz@subsubheadingc             C   sÀ   | j sd| _ tj‚|j}t|tjƒr(d S t|tjtjtjfƒrFtj‚nvt|tj	ƒs|t
jtdƒ| jd |jfd |  |¡ n@y| j| j }W n tk
rª   | jd }Y nX | j d| ¡ d S )NTzJencountered title node not in section, topic, table, admonition or sidebarr¡   )Úlocationz
%s )r[   r   ÚSkipNoderŒ   r   ÚtableZ
AdmonitionZsidebarZtopicr   ÚloggerÚwarningr   r_   ÚlineÚvisit_rubricÚheadingsrZ   r’   rB   r   )r1   r   rŒ   Zheadingr   r   r   Úvisit_titleƒ  s"    
zTexinfoTranslator.visit_titlec             C   s   | j  d¡ d S )Nz

)rB   r   )r1   r   r   r   r   Údepart_title™  s    zTexinfoTranslator.depart_titlec             C   s€   t |jƒdkr.|jd  ¡ dtdƒfkr.tj‚y| j| j }W n tk
r\   | jd }Y nX | j	 
d| ¡ |  jd7  _d S )Nrƒ   r   Z	Footnotesr¡   z
%s )r‘   r   r{   r   r   rÖ   ÚrubricsrZ   r’   rB   r   r]   )r1   r   Zrubricr   r   r   rÛ     s    zTexinfoTranslator.visit_rubricc             C   s   |  j d8  _ | j d¡ d S )Nrƒ   z

)r]   rB   r   )r1   r   r   r   r   Údepart_rubric©  s    zTexinfoTranslator.depart_rubricc             C   s   | j  d¡ d S )Nz

@noindent
)rB   r   )r1   r   r   r   r   Úvisit_subtitle®  s    z TexinfoTranslator.visit_subtitlec             C   s   | j  d¡ d S )Nz

)rB   r   )r1   r   r   r   r   Údepart_subtitle²  s    z!TexinfoTranslator.depart_subtitlec          	   C   sì   |j  |¡}y~y|j |d  }W n, tk
rL   |j j |j j  |j ¡ }Y nX t|tjƒrˆ| d¡rt| j |d ¡ | j 	|d ¡ d S W n tt
fk
r¢   Y nX d|kr°d S | d¡rÊ|  |d |¡ x|d D ]}|  ||¡ qÔW d S )Nrƒ   ÚrefidrÐ   Úrefuri)rŒ   rk   r’   r   r   r   r}   r\   r„   rw   ÚAttributeErrorrÉ   )r1   r   ZparindexÚnextr“   r   r   r   Úvisit_target¸  s&    

zTexinfoTranslator.visit_targetc             C   s   d S )Nr   )r1   r   r   r   r   Údepart_targetÑ  s    zTexinfoTranslator.depart_targetc             C   s¦  t |jtjtjfƒrd S t |d tjƒr,d S | d| ¡ ¡ 	¡ }| dd¡}|st| d¡rtd| j
d  d |d  }|s|d S | d	¡rØ|  |d
d … ¡}|  |¡}|r®||krÀ| j d| ¡ n| j d||f ¡ nÄ| d¡r| j
d d |dd …  }|  |||¡ nŒ| d¡rh| d¡}|dkrB|dd … d }n|dd …  dd¡}|  |||¡ n4| d¡rü|dd …  dd¡}|  |¡}d}d|kr°| dd¡\}}|  |¡}|  |¡}||krä| j d||f ¡ n| j d|||f ¡ n |  |¡}|  |¡}| jjj}| jr&d}|r6||krH| j d| ¡ nT|dkrh| j d||f ¡ n4|dkrˆ| j d||f ¡ n| j d||f ¡ tj‚d S )Nr   rl   rä   r+   rã   r¯   r¡   ú#zmailto:é   z
@email{%s}z@email{%s,%s}rŸ   rƒ   z::doczinfo:é   r   r   rd   z@ref{%s,,,%s}z@ref{%s,,%s,%s}Zinlinez@indicateurl{%s}z@uref{%s,%s}Znoz@uref{%s,,%s}z%s@footnote{%s})r   rŒ   r   rI   r   Z	desc_typeZimager}   r{   r›   r_   rÈ   r€   rB   r   rÊ   Úfindr™   r   r|   r   r0   ry   Ztexinfo_show_urlsra   rÖ   )r1   r   rl   Úurir“   Z	hashindexZ	show_urlsr   r   r   Úvisit_referenceÕ  sb    













z!TexinfoTranslator.visit_referencec             C   s   d S )Nr   )r1   r   r   r   r   Údepart_reference  s    z"TexinfoTranslator.depart_referencec             C   s&   t  | dd¡¡}|  |¡ t j‚d S )NrI   ré   )r   ZTextr}   rÎ   rÖ   )r1   r   Útextr   r   r   Úvisit_number_reference  s    
z(TexinfoTranslator.visit_number_referencec             C   s(   |  ¡ }| j d|  |¡ ¡ tj‚d S )Nz	@cite{%s})r{   rB   r   r€   r   rÖ   )r1   r   rð   r   r   r   Úvisit_title_reference  s    z'TexinfoTranslator.visit_title_referencec             C   s   | j  d¡ d S )Nr¢   )rB   r   )r1   r   r   r   r   Úvisit_paragraph'  s    z!TexinfoTranslator.visit_paragraphc             C   s   | j  d¡ d S )Nr¢   )rB   r   )r1   r   r   r   r   Údepart_paragraph+  s    z"TexinfoTranslator.depart_paragraphc             C   s   | j  d¡ d S )Nz
@quotation
)rB   r   )r1   r   r   r   r   Úvisit_block_quote/  s    z#TexinfoTranslator.visit_block_quotec             C   s   |   ¡  | j d¡ d S )Nz@end quotation
)rh   rB   r   )r1   r   r   r   r   Údepart_block_quote3  s    z$TexinfoTranslator.depart_block_quotec             C   s   | j  d¡ d S )Nz

@example
)rB   r   )r1   r   r   r   r   Úvisit_literal_block8  s    z%TexinfoTranslator.visit_literal_blockc             C   s   |   ¡  | j d¡ d S )Nz@end example
)rh   rB   r   )r1   r   r   r   r   Údepart_literal_block<  s    z&TexinfoTranslator.depart_literal_blockc             C   s*   t |jtjƒs| j d¡ | j d¡ d S )Nz

z	@display
)r   rŒ   r   Ú
line_blockrB   r   )r1   r   r   r   r   Úvisit_line_blockD  s    z"TexinfoTranslator.visit_line_blockc             C   s*   | j  d¡ t|jtjƒs&| j  d¡ d S )Nz@end display
z

)rB   r   r   rŒ   r   rù   )r1   r   r   r   r   Údepart_line_blockJ  s    z#TexinfoTranslator.depart_line_blockc             C   s   |  j d7  _ d S )Nrƒ   )r]   )r1   r   r   r   r   Ú
visit_lineP  s    zTexinfoTranslator.visit_linec             C   s   | j  d¡ |  jd8  _d S )Nz@w{ }
rƒ   )rB   r   r]   )r1   r   r   r   r   Údepart_lineT  s    zTexinfoTranslator.depart_linec             C   s   | j  d¡ d S )Nz@strong{)rB   r   )r1   r   r   r   r   Úvisit_strong[  s    zTexinfoTranslator.visit_strongc             C   s   | j  d¡ d S )Nr˜   )rB   r   )r1   r   r   r   r   Údepart_strong_  s    zTexinfoTranslator.depart_strongc             C   s   | j  d¡ d S )Nz@emph{)rB   r   )r1   r   r   r   r   Úvisit_emphasisc  s    z TexinfoTranslator.visit_emphasisc             C   s   | j  d¡ d S )Nr˜   )rB   r   )r1   r   r   r   r   Údepart_emphasisg  s    z!TexinfoTranslator.depart_emphasisc             C   s   | j  d¡ d S )Nz@code{)rB   r   )r1   r   r   r   r   Úvisit_literalk  s    zTexinfoTranslator.visit_literalc             C   s   | j  d¡ d S )Nr˜   )rB   r   )r1   r   r   r   r   Údepart_literalo  s    z TexinfoTranslator.depart_literalc             C   s   | j  d¡ d S )Nz@w{^)rB   r   )r1   r   r   r   r   Úvisit_superscripts  s    z#TexinfoTranslator.visit_superscriptc             C   s   | j  d¡ d S )Nr˜   )rB   r   )r1   r   r   r   r   Údepart_superscriptw  s    z$TexinfoTranslator.depart_superscriptc             C   s   | j  d¡ d S )Nz@w{[)rB   r   )r1   r   r   r   r   Úvisit_subscript{  s    z!TexinfoTranslator.visit_subscriptc             C   s   | j  d¡ d S )Nz]})rB   r   )r1   r   r   r   r   Údepart_subscript  s    z"TexinfoTranslator.depart_subscriptc             C   s
   t j‚d S )N)r   rÖ   )r1   r   r   r   r   Úvisit_footnote…  s    z TexinfoTranslator.visit_footnotec             C   s   |  j d7  _ | j d¡ d S )Nrƒ   z
@footnote{)ra   rB   r   )r1   r   r   r   r   Úvisit_collected_footnote‰  s    z*TexinfoTranslator.visit_collected_footnotec             C   s   | j  d¡ |  jd8  _d S )Nr˜   rƒ   )rB   r   ra   )r1   r   r   r   r   Údepart_collected_footnoteŽ  s    z+TexinfoTranslator.depart_collected_footnotec          	   C   sV   |  ¡  ¡ }y| jd | \}}W n ttfk
r@   tj‚Y nX | | ¡ tj‚d S )Nr¡   )	r{   r›   r`   rÆ   r’   r   rÖ   r4   ZSkipChildren)r1   r   rÄ   ZfootnodeZusedr   r   r   Úvisit_footnote_reference“  s    
z*TexinfoTranslator.visit_footnote_referencec             C   s>   | j  d¡ x| d¡D ]}|  ||¡ qW |  jd7  _d S )Nr¢   rÐ   rƒ   )rB   r   r}   rÉ   r]   )r1   r   r“   r   r   r   Úvisit_citationž  s    z TexinfoTranslator.visit_citationc             C   s   |  j d8  _ d S )Nrƒ   )r]   )r1   r   r   r   r   Údepart_citation¥  s    z!TexinfoTranslator.depart_citationc             C   s   | j  d¡ d S )Nz@w{[)rB   r   )r1   r   r   r   r   Úvisit_citation_reference©  s    z*TexinfoTranslator.visit_citation_referencec             C   s   | j  d¡ d S )Nz]})rB   r   )r1   r   r   r   r   Údepart_citation_reference­  s    z+TexinfoTranslator.depart_citation_referencec             C   s    |  dd¡}| j d| ¡ d S )NÚbulletÚ*z

@itemize %s
)r}   rB   r   )r1   r   r  r   r   r   Úvisit_bullet_list³  s    z#TexinfoTranslator.visit_bullet_listc             C   s   |   ¡  | j d¡ d S )Nz@end itemize
)rh   rB   r   )r1   r   r   r   r   Údepart_bullet_list¸  s    z$TexinfoTranslator.depart_bullet_listc             C   s@   |  dd¡}ddddœ}|  d|  |d¡¡}| j d| ¡ d S )	NZenumtypeÚarabicr+   ÚaÚA)r  Z
loweralphaZ
upperalphaÚstartz

@enumerate %s
)r}   rB   r   )r1   r   ÚenumZstartersr  r   r   r   Úvisit_enumerated_list½  s    z'TexinfoTranslator.visit_enumerated_listc             C   s   |   ¡  | j d¡ d S )Nz@end enumerate
)rh   rB   r   )r1   r   r   r   r   Údepart_enumerated_listÇ  s    z(TexinfoTranslator.depart_enumerated_listc             C   s   | j  d¡ d S )Nz
@item )rB   r   )r1   r   r   r   r   Úvisit_list_itemÌ  s    z!TexinfoTranslator.visit_list_itemc             C   s   d S )Nr   )r1   r   r   r   r   Údepart_list_itemÐ  s    z"TexinfoTranslator.depart_list_itemc             C   s   | j  d¡ d S )Nz

@table @option
)rB   r   )r1   r   r   r   r   Úvisit_option_listÖ  s    z#TexinfoTranslator.visit_option_listc             C   s   |   ¡  | j d¡ d S )Nz@end table
)rh   rB   r   )r1   r   r   r   r   Údepart_option_listÚ  s    z$TexinfoTranslator.depart_option_listc             C   s   d S )Nr   )r1   r   r   r   r   Úvisit_option_list_itemß  s    z(TexinfoTranslator.visit_option_list_itemc             C   s   d S )Nr   )r1   r   r   r   r   Údepart_option_list_itemã  s    z)TexinfoTranslator.depart_option_list_itemc             C   s
   d| _ d S )Nz@item)Ú	at_item_x)r1   r   r   r   r   Úvisit_option_groupç  s    z$TexinfoTranslator.visit_option_groupc             C   s   d S )Nr   )r1   r   r   r   r   Údepart_option_groupë  s    z%TexinfoTranslator.depart_option_groupc             C   s*   |  j d7  _ | j d| j ¡ d| _d S )Nrƒ   z
%s z@itemx)r^   rB   r   r!  )r1   r   r   r   r   Úvisit_optionï  s    zTexinfoTranslator.visit_optionc             C   s   |  j d8  _ d S )Nrƒ   )r^   )r1   r   r   r   r   Údepart_optionõ  s    zTexinfoTranslator.depart_optionc             C   s   d S )Nr   )r1   r   r   r   r   Úvisit_option_stringù  s    z%TexinfoTranslator.visit_option_stringc             C   s   d S )Nr   )r1   r   r   r   r   Údepart_option_stringý  s    z&TexinfoTranslator.depart_option_stringc             C   s   | j  | dd¡¡ d S )NZ	delimiterr   )rB   r   r}   )r1   r   r   r   r   Úvisit_option_argument  s    z'TexinfoTranslator.visit_option_argumentc             C   s   d S )Nr   )r1   r   r   r   r   Údepart_option_argument  s    z(TexinfoTranslator.depart_option_argumentc             C   s   | j  d¡ d S )Nr¢   )rB   r   )r1   r   r   r   r   Úvisit_description	  s    z#TexinfoTranslator.visit_descriptionc             C   s   d S )Nr   )r1   r   r   r   r   Údepart_description  s    z$TexinfoTranslator.depart_descriptionc             C   s   | j  d¡ d S )Nz

@table @asis
)rB   r   )r1   r   r   r   r   Úvisit_definition_list  s    z'TexinfoTranslator.visit_definition_listc             C   s   |   ¡  | j d¡ d S )Nz@end table
)rh   rB   r   )r1   r   r   r   r   Údepart_definition_list  s    z(TexinfoTranslator.depart_definition_listc             C   s
   d| _ d S )Nz@item)r!  )r1   r   r   r   r   Úvisit_definition_list_item  s    z,TexinfoTranslator.visit_definition_list_itemc             C   s   d S )Nr   )r1   r   r   r   r   Údepart_definition_list_item   s    z-TexinfoTranslator.depart_definition_list_itemc             C   sx   x|  d¡D ]}|  ||¡ qW x:|d d … D ]*}t|tjtjfƒr.| | ¡ | |¡ q.W | j	 
d| j ¡ d| _d S )NrÐ   z
%s z@itemx)r}   rÉ   r   r   rk   r   Útargetr4   ÚremoverB   r   r!  )r1   r   r“   r¿   r   r   r   Ú
visit_term$  s    
zTexinfoTranslator.visit_termc             C   s   d S )Nr   )r1   r   r   r   r   Údepart_term0  s    zTexinfoTranslator.depart_termc             C   s   | j  d¡ d S )Nz : )rB   r   )r1   r   r   r   r   Úvisit_classifier4  s    z"TexinfoTranslator.visit_classifierc             C   s   d S )Nr   )r1   r   r   r   r   Údepart_classifier8  s    z#TexinfoTranslator.depart_classifierc             C   s   | j  d¡ d S )Nr¢   )rB   r   )r1   r   r   r   r   Úvisit_definition<  s    z"TexinfoTranslator.visit_definitionc             C   s   d S )Nr   )r1   r   r   r   r   Údepart_definition@  s    z#TexinfoTranslator.depart_definitionc             C   s
   d| _ d S )Nz@item)Ú	entry_sep)r1   r   r   r   r   Úvisit_tableF  s    zTexinfoTranslator.visit_tablec             C   s   | j  d¡ d S )Nz
@end multitable

)rB   r   )r1   r   r   r   r   Údepart_tableJ  s    zTexinfoTranslator.depart_tablec             C   s   d S )Nr   )r1   r   r   r   r   Úvisit_tabular_col_specN  s    z(TexinfoTranslator.visit_tabular_col_specc             C   s   d S )Nr   )r1   r   r   r   r   Údepart_tabular_col_specR  s    z)TexinfoTranslator.depart_tabular_col_specc             C   sd   | j  |d ¡ t| j ƒ| jkr$d S | j d¡ x.t| j ƒD ] \}}| j dd|d   ¡ q<W d S )NZcolwidthz

@multitable z{%s} r   r   )rc   r   r‘   Ún_colsrB   r   )r1   r   r%   r¿   r   r   r   Úvisit_colspecV  s    zTexinfoTranslator.visit_colspecc             C   s   d S )Nr   )r1   r   r   r   r   Údepart_colspec_  s    z TexinfoTranslator.depart_colspecc             C   s   g | _ |d | _d S )NZcols)rc   r=  )r1   r   r   r   r   Úvisit_tgroupc  s    zTexinfoTranslator.visit_tgroupc             C   s   d S )Nr   )r1   r   r   r   r   Údepart_tgrouph  s    zTexinfoTranslator.depart_tgroupc             C   s
   d| _ d S )Nz	@headitem)r8  )r1   r   r   r   r   Úvisit_theadl  s    zTexinfoTranslator.visit_theadc             C   s   d S )Nr   )r1   r   r   r   r   Údepart_theadp  s    zTexinfoTranslator.depart_theadc             C   s   d S )Nr   )r1   r   r   r   r   Úvisit_tbodyt  s    zTexinfoTranslator.visit_tbodyc             C   s   d S )Nr   )r1   r   r   r   r   Údepart_tbodyx  s    zTexinfoTranslator.depart_tbodyc             C   s   d S )Nr   )r1   r   r   r   r   Ú	visit_row|  s    zTexinfoTranslator.visit_rowc             C   s
   d| _ d S )Nz@item)r8  )r1   r   r   r   r   Ú
depart_row€  s    zTexinfoTranslator.depart_rowc             C   s   | j  d| j ¡ d| _d S )Nz
%s
z@tab)rB   r   r8  )r1   r   r   r   r   Úvisit_entry„  s    zTexinfoTranslator.visit_entryc             C   s*   x$t | dd¡ƒD ]}| j d¡ qW d S )NZmorecolsr   z
@tab
)r   r}   rB   r   )r1   r   r%   r   r   r   Údepart_entry‰  s    zTexinfoTranslator.depart_entryc             C   s   d S )Nr   )r1   r   r   r   r   Úvisit_field_list  s    z"TexinfoTranslator.visit_field_listc             C   s   d S )Nr   )r1   r   r   r   r   Údepart_field_list”  s    z#TexinfoTranslator.depart_field_listc             C   s   | j  d¡ d S )Nr¢   )rB   r   )r1   r   r   r   r   Úvisit_field˜  s    zTexinfoTranslator.visit_fieldc             C   s   | j  d¡ d S )Nr¢   )rB   r   )r1   r   r   r   r   Údepart_fieldœ  s    zTexinfoTranslator.depart_fieldc             C   s   |   ¡  | j d¡ d S )Nz@*)rh   rB   r   )r1   r   r   r   r   Úvisit_field_name   s    z"TexinfoTranslator.visit_field_namec             C   s   | j  d¡ d S )Nz: )rB   r   )r1   r   r   r   r   Údepart_field_name¥  s    z#TexinfoTranslator.depart_field_namec             C   s   d S )Nr   )r1   r   r   r   r   Úvisit_field_body©  s    z"TexinfoTranslator.visit_field_bodyc             C   s   d S )Nr   )r1   r   r   r   r   Údepart_field_body­  s    z#TexinfoTranslator.depart_field_bodyc             C   s*   |s|   |d  ¡ ¡}| j d| ¡ d S )Nr   z
@cartouche
@quotation %s )rx   r{   rB   r   )r1   r   rl   r   r   r   Úvisit_admonition³  s    z"TexinfoTranslator.visit_admonitionc             C   s   |   ¡  | j d¡ d S )Nz@end quotation
@end cartouche
)rh   rB   r   )r1   r   r   r   r   Údepart_admonition¹  s    z#TexinfoTranslator.depart_admonitionc                s   ‡ fdd„}|S )Nc                s   |   |tˆ  ¡ d S )N)rR  r
   )r1   r   )rl   r   r   ÚvisitÁ  s    z7TexinfoTranslator._make_visit_admonition.<locals>.visitr   )rl   rT  r   )rl   r   Ú_make_visit_admonition¿  s    z(TexinfoTranslator._make_visit_admonitionZ	attentionZcautionZdangerÚerrorZhintZ	importantZnoteZtiprÙ   c             C   s
   t j‚d S )N)r   rÖ   )r1   r   r   r   r   Úvisit_docinfoÛ  s    zTexinfoTranslator.visit_docinfoc             C   s
   t j‚d S )N)r   rÖ   )r1   r   r   r   r   Úvisit_generatedß  s    z!TexinfoTranslator.visit_generatedc             C   s
   t j‚d S )N)r   rÖ   )r1   r   r   r   r   Úvisit_headerã  s    zTexinfoTranslator.visit_headerc             C   s
   t j‚d S )N)r   rÖ   )r1   r   r   r   r   Úvisit_footerç  s    zTexinfoTranslator.visit_footerc             C   s   |  d¡r| j d¡ d S )NÚliteral_blockz

@float LiteralBlock
)r}   rB   r   )r1   r   r   r   r   Úvisit_containerë  s    
z!TexinfoTranslator.visit_containerc             C   s   |  d¡r| j d¡ d S )Nr[  z
@end float

)r}   rB   r   )r1   r   r   r   r   Údepart_containerð  s    
z"TexinfoTranslator.depart_containerc             C   s   d S )Nr   )r1   r   r   r   r   Úvisit_decorationõ  s    z"TexinfoTranslator.visit_decorationc             C   s   d S )Nr   )r1   r   r   r   r   Údepart_decorationù  s    z#TexinfoTranslator.depart_decorationc             C   sF   d|  dg ¡krtj‚|d }|  |¡ | j d|  | ¡ ¡ ¡ d S )NÚcontentsÚclassesr   z%s
)r}   r   rÖ   rÛ   rB   r   rx   r{   )r1   r   rI   r   r   r   Úvisit_topicý  s
    
zTexinfoTranslator.visit_topicc             C   s   d S )Nr   )r1   r   r   r   r   Údepart_topic  s    zTexinfoTranslator.depart_topicc             C   s   | j  dd ¡ d S )Nz

%s

ZB__________________________________________________________________)rB   r   )r1   r   r   r   r   Úvisit_transition
  s    z"TexinfoTranslator.visit_transitionc             C   s   d S )Nr   )r1   r   r   r   r   Údepart_transition  s    z#TexinfoTranslator.depart_transitionc             C   s   | j  d¡ d S )Nz

@center --- )rB   r   )r1   r   r   r   r   Úvisit_attribution  s    z#TexinfoTranslator.visit_attributionc             C   s   | j  d¡ d S )Nz

)rB   r   )r1   r   r   r   r   Údepart_attribution  s    z$TexinfoTranslator.depart_attributionc             C   s:   |  dd¡ ¡ }d|ks d|kr0| j | ¡ ¡ tj‚d S )NÚformatr+   r(   r)   )r}   r   rB   r   r{   r   rÖ   )r1   r   rh  r   r   r   Ú	visit_raw  s    zTexinfoTranslator.visit_rawc             C   s   | j  d¡ d S )Nz

@float Figure
)rB   r   )r1   r   r   r   r   Úvisit_figure!  s    zTexinfoTranslator.visit_figurec             C   s   | j  d¡ d S )Nz
@end float

)rB   r   )r1   r   r   r   r   Údepart_figure%  s    zTexinfoTranslator.depart_figurec             C   sX   t |jtjƒs(t |jtjƒr6|j d¡r6| j d¡ ntj	t
dƒ| jd |jfd d S )Nr[  z

@caption{zcaption not inside a figure.r¡   )rÕ   )r   rŒ   r   ÚfigureÚ	containerr}   rB   r   rØ   rÙ   r   r_   rÚ   )r1   r   r   r   r   Úvisit_caption)  s    
zTexinfoTranslator.visit_captionc             C   s8   t |jtjƒs(t |jtjƒr4|j d¡r4| j d¡ d S )Nr[  z}
)r   rŒ   r   rl  rm  r}   rB   r   )r1   r   r   r   r   Údepart_caption3  s    z TexinfoTranslator.depart_captionc       	   
   C   s¶   |d | j jkr"| j j|d  }n| jr,d S |d }| d¡dkrFd S t |¡\}}|j}|  | dd¡¡}|  | dd¡¡}|  	| dd¡¡}| j
 d|||||d	d … f ¡ d S )
Nrí   z://r¡   r§   r+   ÚheightÚaltz
@image{%s,%s,%s,%s,%s}
rƒ   )r0   ZimagesÚignore_missing_imagesrì   r   ÚsplitextZ
attributesr³   r}   r€   rB   r   )	r1   r   rí   rl   ZextZattrsr§   rp  rq  r   r   r   Úvisit_image:  s    zTexinfoTranslator.visit_imagec             C   s   d S )Nr   )r1   r   r   r   r   Údepart_imageO  s    zTexinfoTranslator.depart_imagec             C   s   d S )Nr   )r1   r   r   r   r   Úvisit_compoundS  s    z TexinfoTranslator.visit_compoundc             C   s   d S )Nr   )r1   r   r   r   r   Údepart_compoundW  s    z!TexinfoTranslator.depart_compoundc             C   s   |   |¡ d S )N)rb  )r1   r   r   r   r   Úvisit_sidebar[  s    zTexinfoTranslator.visit_sidebarc             C   s   |   |¡ d S )N)rc  )r1   r   r   r   r   Údepart_sidebar_  s    z TexinfoTranslator.depart_sidebarc             C   s   | j  d¡ d S )Nz@w{()rB   r   )r1   r   r   r   r   Úvisit_labelc  s    zTexinfoTranslator.visit_labelc             C   s   | j  d¡ d S )Nz)} )rB   r   )r1   r   r   r   r   Údepart_labelg  s    zTexinfoTranslator.depart_labelc             C   s   d S )Nr   )r1   r   r   r   r   Úvisit_legendk  s    zTexinfoTranslator.visit_legendc             C   s   d S )Nr   )r1   r   r   r   r   Údepart_legendo  s    zTexinfoTranslator.depart_legendc             C   s   | j  d| ¡  ¡ tj‚d S )Nz.
@verbatim
<SYSTEM MESSAGE: %s>
@end verbatim
)rB   r   r{   r   rÖ   )r1   r   r   r   r   Úvisit_system_messages  s    z&TexinfoTranslator.visit_system_messagec             C   s<   | j  d¡ x$| ¡  ¡ D ]}| j  d| ¡ qW tj‚d S )Nr¢   z@c %s
)rB   r   r{   Ú
splitlinesr   rÖ   )r1   r   rÚ   r   r   r   Úvisit_commentz  s    zTexinfoTranslator.visit_commentc             C   s   | j  d¡ d S )Nz>>)rB   r   )r1   r   r   r   r   Úvisit_problematic  s    z#TexinfoTranslator.visit_problematicc             C   s   | j  d¡ d S )Nz<<)rB   r   )r1   r   r   r   r   Údepart_problematic…  s    z$TexinfoTranslator.depart_problematicc             C   s$   t jtdƒ|| jd |jfd d S )Nzunimplemented node type: %rr¡   )rÕ   )rØ   rÙ   r   r_   rÚ   )r1   r   r   r   r   Úunimplemented_visit‰  s    z%TexinfoTranslator.unimplemented_visitc             C   s$   t jtdƒ|| jd |jfd d S )Nzunknown node type: %rr¡   )rÕ   )rØ   rÙ   r   r_   rÚ   )r1   r   r   r   r   Úunknown_visitŽ  s    zTexinfoTranslator.unknown_visitc             C   s   d S )Nr   )r1   r   r   r   r   Úunknown_departure“  s    z#TexinfoTranslator.unknown_departurec             C   sÒ   |   d ¡ g }x|D ]}| |d ¡ qW tdd„ |D ƒƒ}x€|D ]x}|d r‚x| d¡D ]}|  ||¡ qZW |d  |¡d }ndd|  }| j |  |¡¡ | j |  | ¡ d ¡¡ qBW |  	d ¡ t
j‚d S )	NZ	tokennamec             s   s   | ]}t |ƒV  qd S )N)r‘   )r   rl   r   r   r   r   Ÿ  s    z9TexinfoTranslator.visit_productionlist.<locals>.<genexpr>rÐ   z ::=z%s    r   r¢   )r÷   r   r¨   r}   rÉ   ÚljustrB   rx   r{   rø   r   rÖ   )r1   r   ÚnamesZ
productionÚmaxlenr“   r#   r   r   r   Úvisit_productionlist™  s    



z&TexinfoTranslator.visit_productionlistc             C   s   d S )Nr   )r1   r   r   r   r   Úvisit_production¬  s    z"TexinfoTranslator.visit_productionc             C   s   d S )Nr   )r1   r   r   r   r   Údepart_production°  s    z#TexinfoTranslator.depart_productionc             C   s   | j  d¡ d S )Nz@code{)rB   r   )r1   r   r   r   r   Úvisit_literal_emphasis´  s    z(TexinfoTranslator.visit_literal_emphasisc             C   s   | j  d¡ d S )Nr˜   )rB   r   )r1   r   r   r   r   Údepart_literal_emphasis¸  s    z)TexinfoTranslator.depart_literal_emphasisc             C   s   | j  d¡ d S )Nz@code{)rB   r   )r1   r   r   r   r   Úvisit_literal_strong¼  s    z&TexinfoTranslator.visit_literal_strongc             C   s   | j  d¡ d S )Nr˜   )rB   r   )r1   r   r   r   r   Údepart_literal_strongÀ  s    z'TexinfoTranslator.depart_literal_strongc             C   sb   t |jtjƒr|  ¡  n| j d¡ x8|d D ],}|\}}}}}|  |¡}| j d| ¡ q.W d S )Nr¢   rŽ   z@geindex %s
)r   rŒ   r   Z	paragraphrh   rB   r   r   )r1   r   r‚   Útyprð   ÚtidZtext2Zkey_r   r   r   Úvisit_indexÄ  s    

zTexinfoTranslator.visit_indexc             C   s   | j  d¡ d S )Nr¢   )rB   r   )r1   r   r   r   r   Úvisit_versionmodifiedÐ  s    z'TexinfoTranslator.visit_versionmodifiedc             C   s   | j  d¡ d S )Nr¢   )rB   r   )r1   r   r   r   r   Údepart_versionmodifiedÔ  s    z(TexinfoTranslator.depart_versionmodifiedc             C   s2   | j  d¡ | j |d ¡ | j |  |¡¡ d S )Nz:docr¾   )r\   r„   r_   r   r`   rÅ   )r1   r   r   r   r   Úvisit_start_of_fileØ  s    z%TexinfoTranslator.visit_start_of_filec             C   s   | j  ¡  | j ¡  d S )N)r_   rg   r`   )r1   r   r   r   r   Údepart_start_of_fileß  s    
z&TexinfoTranslator.depart_start_of_filec             C   s(   |   | ¡ ¡}| j d| ¡ tj‚d S )Nz

@center %s

)r€   r{   rB   r   r   rÖ   )r1   r   Útxtr   r   r   Úvisit_centeredä  s    z TexinfoTranslator.visit_centeredc             C   s   | j  dtd  ¡ d S )Nz

@subsubheading %s

Zseealso)rB   r   r
   )r1   r   r   r   r   Úvisit_seealsoê  s    zTexinfoTranslator.visit_seealsoc             C   s   | j  d¡ d S )Nr¢   )rB   r   )r1   r   r   r   r   Údepart_seealsoï  s    z TexinfoTranslator.depart_seealsoc             C   s
   t j‚d S )N)r   rÖ   )r1   r   r   r   r   Ú
visit_metaó  s    zTexinfoTranslator.visit_metac             C   s   d S )Nr   )r1   r   r   r   r   Úvisit_glossary÷  s    z TexinfoTranslator.visit_glossaryc             C   s   d S )Nr   )r1   r   r   r   r   Údepart_glossaryû  s    z!TexinfoTranslator.depart_glossaryc             C   sJ   | j  d¡ | j  d dd„ |jd jD ƒ¡d ¡ | j  d¡ tj‚d S )Nz

z, c             s   s   | ]}|  ¡ V  qd S )N)r{   )r   r¿   r   r   r   r     s   z/TexinfoTranslator.visit_acks.<locals>.<genexpr>r   rœ   )rB   r   r"   r   r   rÖ   )r1   r   r   r   r   Ú
visit_acksÿ  s
    zTexinfoTranslator.visit_acksc             C   s   || _ d| _d S )Nz@deffn)rª   Ú	at_deffnx)r1   r   r   r   r   Ú
visit_desc	  s    zTexinfoTranslator.visit_descc             C   s   d | _ |  ¡  | j d¡ d S )Nz@end deffn
)rª   rh   rB   r   )r1   r   r   r   r   Údepart_desc  s    zTexinfoTranslator.depart_descc          	   C   sÌ   |  j d7  _ |jd }|dkr@x| d¡D ]}|  ||¡ q,W y:| jj |jd ¡}| jjj}| 	|j
| ||jk¡}W n ttfk
r–   |}Y nX |  t|ƒ¡}| j d| j|f ¡ d| _|| _d S )Nrƒ   ÚobjtypeZdescriberÐ   r½   z	
%s {%s} z@deffnx)r^   rŒ   r}   rÉ   r0   r»   Z
get_domainry   Zprimary_domainZget_type_nameZobject_typesrl   rÆ   r	   r€   r&   rB   r   rŸ  Údesc_type_name)r1   r   r¢  r“   r½   Zprimaryrl   Úcategoryr   r   r   Úvisit_desc_signature  s     


z&TexinfoTranslator.visit_desc_signaturec             C   s$   | j  d¡ |  jd8  _d | _d S )Nr¢   rƒ   )rB   r   r^   r£  )r1   r   r   r   r   Údepart_desc_signature)  s    z'TexinfoTranslator.depart_desc_signaturec             C   s   d S )Nr   )r1   r   r   r   r   Úvisit_desc_name/  s    z!TexinfoTranslator.visit_desc_namec             C   s   d S )Nr   )r1   r   r   r   r   Údepart_desc_name3  s    z"TexinfoTranslator.depart_desc_namec             C   s   d S )Nr   )r1   r   r   r   r   Úvisit_desc_addname7  s    z$TexinfoTranslator.visit_desc_addnamec             C   s   d S )Nr   )r1   r   r   r   r   Údepart_desc_addname;  s    z%TexinfoTranslator.depart_desc_addnamec             C   s   d S )Nr   )r1   r   r   r   r   Úvisit_desc_type?  s    z!TexinfoTranslator.visit_desc_typec             C   s   d S )Nr   )r1   r   r   r   r   Údepart_desc_typeC  s    z"TexinfoTranslator.depart_desc_typec             C   s   | j  d¡ d S )Nz -> )rB   r   )r1   r   r   r   r   Úvisit_desc_returnsG  s    z$TexinfoTranslator.visit_desc_returnsc             C   s   d S )Nr   )r1   r   r   r   r   Údepart_desc_returnsK  s    z%TexinfoTranslator.depart_desc_returnsc             C   s   | j  d¡ d| _d S )Nz (rƒ   )rB   r   Úfirst_param)r1   r   r   r   r   Úvisit_desc_parameterlistO  s    z*TexinfoTranslator.visit_desc_parameterlistc             C   s   | j  d¡ d S )Nú))rB   r   )r1   r   r   r   r   Údepart_desc_parameterlistT  s    z+TexinfoTranslator.depart_desc_parameterlistc             C   sJ   | j s| j d¡ nd| _ |  | ¡ ¡}| dd¡}| j |¡ tj‚d S )Nz, r   õ   Â z@w{ })r¯  rB   r   rx   r{   r™   r   rÖ   )r1   r   rð   r   r   r   Úvisit_desc_parameterX  s    z&TexinfoTranslator.visit_desc_parameterc             C   s   | j  d¡ d S )Nú[)rB   r   )r1   r   r   r   r   Úvisit_desc_optionald  s    z%TexinfoTranslator.visit_desc_optionalc             C   s   | j  d¡ d S )Nú])rB   r   )r1   r   r   r   r   Údepart_desc_optionalh  s    z&TexinfoTranslator.depart_desc_optionalc             C   s@   |  ¡  ¡ }|| jd ks6|| jd ks6|| j ¡ kr<tj‚d S )NZdesctyper¢  )r{   r›   rª   r£  r   r   rÖ   )r1   r   r—  r   r   r   Úvisit_desc_annotationl  s
    z'TexinfoTranslator.visit_desc_annotationc             C   s   d S )Nr   )r1   r   r   r   r   Údepart_desc_annotationy  s    z(TexinfoTranslator.depart_desc_annotationc             C   s   d S )Nr   )r1   r   r   r   r   Úvisit_desc_content}  s    z$TexinfoTranslator.visit_desc_contentc             C   s   d S )Nr   )r1   r   r   r   r   Údepart_desc_content  s    z%TexinfoTranslator.depart_desc_contentc             C   s   d S )Nr   )r1   r   r   r   r   Úvisit_inline…  s    zTexinfoTranslator.visit_inlinec             C   s   d S )Nr   )r1   r   r   r   r   Údepart_inline‰  s    zTexinfoTranslator.depart_inlinec             C   s`   |  ¡ }| j d¡ | d¡rP|| jkrP| j d|  |d ¡ ¡ | j |¡ n| j d¡ d S )Nz@abbr{Zexplanationz,%s}r˜   )r{   rB   r   Úhasattrrb   rX   r€   r„   )r1   r   Zabbrr   r   r   Úvisit_abbreviation  s    z$TexinfoTranslator.visit_abbreviationc             C   s   | j  | j ¡ ¡ d S )N)rB   r   rX   rg   )r1   r   r   r   r   Údepart_abbreviation—  s    z%TexinfoTranslator.depart_abbreviationc             C   s
   |   |¡S )N)rŒ  )r1   r   r   r   r   Úvisit_manpage›  s    zTexinfoTranslator.visit_manpagec             C   s
   |   |¡S )N)r  )r1   r   r   r   r   Údepart_manpageŸ  s    z TexinfoTranslator.depart_manpagec             C   s   d S )Nr   )r1   r   r   r   r   Úvisit_download_reference£  s    z*TexinfoTranslator.visit_download_referencec             C   s   d S )Nr   )r1   r   r   r   r   Údepart_download_reference§  s    z+TexinfoTranslator.depart_download_referencec             C   s   |   |¡ d S )N)r  )r1   r   r   r   r   Úvisit_hlist«  s    zTexinfoTranslator.visit_hlistc             C   s   |   |¡ d S )N)r  )r1   r   r   r   r   Údepart_hlist¯  s    zTexinfoTranslator.depart_hlistc             C   s   d S )Nr   )r1   r   r   r   r   Úvisit_hlistcol³  s    z TexinfoTranslator.visit_hlistcolc             C   s   d S )Nr   )r1   r   r   r   r   Údepart_hlistcol·  s    z!TexinfoTranslator.depart_hlistcolc             C   s   d S )Nr   )r1   r   r   r   r   Úvisit_pending_xref»  s    z$TexinfoTranslator.visit_pending_xrefc             C   s   d S )Nr   )r1   r   r   r   r   Údepart_pending_xref¿  s    z%TexinfoTranslator.depart_pending_xrefc             C   s(   | j  d|  | ¡ ¡ d ¡ tj‚d S )Nz@math{r˜   )rB   r   r€   r{   r   rÖ   )r1   r   r   r   r   Ú
visit_mathÃ  s    zTexinfoTranslator.visit_mathc             C   s>   |  d¡r|  |d |¡ | j d|  | ¡ ¡ ¡ tj‚d S )NZlabelz

@example
%s
@end example

)r}   rÉ   rB   r   r€   r{   r   rÖ   )r1   r   r   r   r   Úvisit_math_blockÈ  s
    
z"TexinfoTranslator.visit_math_blockN)r+   )ôr;   r<   r=   rr  ru   r/   r5   rK   rU   rV   rW   rx   r€   r|   r   rh   r~   r   Úcompiler­   re   r³   rT   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ø   Zvisit_doctest_blockZdepart_doctest_blockrú   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/  r2  r3  r4  r5  r6  r7  r9  r:  r;  r<  r>  r?  r@  rA  rB  rC  rD  rE  rF  rG  rH  rI  rJ  rK  rL  rM  rN  rO  rP  rQ  rR  rS  rU  Zvisit_attentionZdepart_attentionZvisit_cautionZdepart_cautionZvisit_dangerZdepart_dangerZvisit_errorZdepart_errorZ
visit_hintZdepart_hintZvisit_importantZdepart_importantZ
visit_noteZdepart_noteZ	visit_tipZ
depart_tipZvisit_warningZdepart_warningrW  rX  rY  rZ  r\  r]  r^  r_  rb  rc  rd  re  rf  rg  ri  rj  rk  rn  ro  rt  ru  rv  rw  rx  ry  rz  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?   ‘   sô  (- "(

@
	







	


r?   )N)&r>   r   r©   Úosr   Zdocutilsr   r   Zsixr   Z	six.movesr   Zsphinxr   r   Zsphinx.errorsr	   Zsphinx.localer
   r   r   Zsphinx.utilr   Zsphinx.util.i18nr   Zsphinx.writers.latexr   Z	getLoggerr;   rØ   r   rj   r   r&   r.   r'   rJ   r?   r   r   r   r   Ú<module>
   s(   
$
 