B
    öÀ„\%‹  ã               @   sÐ   d Z ddl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 ddlmZmZ dd	lmZ e e¡ZG d
d„ dejƒZdZdZefdd„ZG dd„ dejƒZG dd„ dejƒZdS )zÏ
    sphinx.writers.text
    ~~~~~~~~~~~~~~~~~~~

    Custom docutils writer for plain text.

    :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.
é    N)Úgroupby)ÚnodesÚwriters)Úcolumn_width)Úzip_longest)Úaddnodes)ÚadmonitionlabelsÚ_)Úloggingc               @   s:   e Zd ZdZe d¡Zdd„ Zdd„ Zdd„ Z	d	d
„ Z
dS )ÚTextWrapperz;Custom subclass that uses a different word separator regex.zf(\s+|(?<=\s)(?::[a-z-]+:)?`\S+|[^\s\w]*\w+[a-zA-Z]-(?=\w+[a-zA-Z])|(?<=[\w\!\"\'\&\.\,\?])-{2,}(?=\w))c       	      C   s  t | ddƒ}g }| jdkr(td| j ƒ‚| ¡  xæ|rg }d}|rL| j}n| j}| jt|ƒ }|r~|d  ¡ dkr~|r~|d= x:|r¸t|d ƒ}|| |kr´| | 	¡ ¡ ||7 }q€P q€W |rÞt|d ƒ|krÞ|  
||||¡ |rü|rü|d  ¡ dkrü|d= |r2| |d |¡ ¡ q2W |S )zÃ_wrap_chunks(chunks : [string]) -> [string]

        The original _wrap_chunks uses len() to calculate width.
        This method respects wide/fullwidth characters for width adjustment.
        Údrop_whitespaceTr   zinvalid width %r (must be > 0)éÿÿÿÿÚ )ÚgetattrÚwidthÚ
ValueErrorÚreverseZsubsequent_indentZinitial_indentr   ÚstripÚappendÚpopÚ_handle_long_wordÚjoin)	ÚselfÚchunksr   ÚlinesÚcur_lineÚcur_lenÚindentr   Úl© r   ú2lib/python3.7/site-packages/sphinx/writers/text.pyÚ_wrap_chunks)   s6    

zTextWrapper._wrap_chunksc             C   sV   d}xHt |ƒD ]<\}}|t|ƒ7 }||kr|d|d … ||d d… fS qW |dfS )z„_break_word(word : string, space_left : int) -> (string, string)

        Break line by unicode width instead of len(word).
        r   Né   r   )Ú	enumerater   )r   ZwordÚ
space_leftZtotalÚiÚcr   r   r    Ú_break_wordZ   s    $zTextWrapper._break_wordc                sj   ‡ fdd„}g }xT||ƒD ]H}xBt |tƒD ]4\}}|dkrP| |d |¡ƒ¡ q*| t|ƒ¡ q*W qW |S )z¶_split(text : string) -> [string]

        Override original method that only split by 'wordsep_re'.
        This '_split' split wide-characters into chunk by one character.
        c                s   t j ˆ | ¡S )N)Útextwrapr   Ú_split)Út)r   r   r    Úsplitn   s    z!TextWrapper._split.<locals>.splitr"   r   )r   r   Úextendr   Úlist)r   Útextr+   r   ÚchunkÚwÚgr   )r   r    r)   g   s    zTextWrapper._splitc             C   sR   t || dƒ}| jr<|  |d |¡\}}| |¡ ||d< n|sN| | ¡ ¡ dS )zé_handle_long_word(chunks : [string],
                             cur_line : [string],
                             cur_len : int, width : int)

        Override original method for using self._break_word() instead of slice.
        r"   r   N)ÚmaxZbreak_long_wordsr'   r   r   )r   Zreversed_chunksr   r   r   r$   r   Úrr   r   r    r   z   s    

zTextWrapper._handle_long_wordN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚreÚcompileZ
wordsep_rer!   r'   r)   r   r   r   r   r    r       s   1r   éF   é   c             K   s   t f d|i|—Ž}| | ¡S )Nr   )r   Úwrap)r.   r   Úkwargsr0   r   r   r    Úmy_wrap   s    r>   c               @   s,   e Zd ZdZdZi ZdZdd„ Zdd„ ZdS )Ú
TextWriter)r.   )zNo options here.r   r   Nc             C   s   t j | ¡ || _d S )N)r   ÚWriterÚ__init__Úbuilder)r   rB   r   r   r    rA      s    zTextWriter.__init__c             C   s*   | j  | j| j ¡}| j |¡ |j| _d S )N)rB   Zcreate_translatorÚdocumentZ	walkaboutÚbodyÚoutput)r   Zvisitorr   r   r    Ú	translate¢   s    zTextWriter.translate)	r4   r5   r6   Z	supportedZsettings_specZsettings_defaultsrE   rA   rF   r   r   r   r    r?   –   s   r?   c               @   s¤  e Zd ZdZdd„ Zdd„ Zefdd„Zdd	gd
fdd„Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Ze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/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Z d9d:„ Z!d;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`„ Z4dadb„ Z5dcdd„ Z6dedf„ Z7dgdh„ Z8didj„ Z9dkdl„ Z:dmdn„ Z;dodp„ Z<dqdr„ Z=dsdt„ Z>dudv„ Z?dwdx„ Z@dydz„ ZAd{d|„ ZBd}d~„ ZCdd€„ ZDdd‚„ ZEdƒd„„ ZFd…d†„ ZGd‡dˆ„ ZHd‰dŠ„ ZId‹dŒ„ ZJddŽ„ ZKdd„ ZLd‘d’„ ZMd“d”„ ZNd•d–„ ZOd—d˜„ ZPd™dš„ ZQd›dœ„ ZRddž„ 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Ô„ 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ú„ Ze€Z‚edûƒZƒe€Z„edüƒZ…e€Z†edýƒZ‡e€ZˆedþƒZ‰e€ZŠedÿƒZ‹e€ZŒed ƒZe€ZŽedƒZe€ZedƒZ‘e€Z’edƒZ“e€Z”e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/d0„ Z«d1d2„ Z¬d3d4„ Z­d5d6„ Z®d7d8„ Z¯d9d:„ Z°d;d<„ Z±d=d>„ Z²d?d@„ Z³dAdB„ Z´dCdD„ ZµdEdF„ Z¶dGdH„ Z·dIdJ„ Z¸dKdL„ Z¹dMdN„ ZºdOdP„ Z»dQdR„ Z¼dSdT„ Z½dUdV„ Z¾dWdX„ Z¿dYdZ„ ZÀd[d\„ ZÁd]d^„ ZÂd_d`„ ZÃdadb„ ZÄdcdd„ ZÅdedf„ ZÆdgdh„ ZÇdidj„ ZÈdkdl„ ZÉdmdn„ ZÊdodp„ ZËdqdr„ ZÌdsdt„ ZÍdudv„ ZÎdwdx„ ZÏdydz„ 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 (‹  ÚTextTranslatorz*=-~"+`c             C   sŽ   t j | |¡ || _|jj}|dkr,d| _n|dkr>tj| _nd| _|jj	| _
|jj| _|jj| _g g| _dg| _g | _d| _d| _d | _d S )NZwindowsz
ZnativeÚ
r   )r   ÚNodeVisitorrA   rB   ZconfigZtext_newlinesÚnlÚosÚlinesepZtext_sectioncharsÚsectioncharsZtext_add_secnumbersÚadd_secnumbersZtext_secnumber_suffixÚsecnumber_suffixÚstatesÚstateindentÚlist_counterÚsectionlevelÚlineblocklevelÚtable)r   rC   rB   Únewlinesr   r   r    rA   ¬   s"    



zTextTranslator.__init__c             C   s   | j d  d|f¡ d S )Nr   )rP   r   )r   r.   r   r   r    Úadd_textÂ   s    zTextTranslator.add_textc             C   s   | j  g ¡ | j |¡ d S )N)rP   r   rQ   )r   r   r   r   r    Ú	new_stateÆ   s    zTextTranslator.new_stateTr   Nc                s&  | j  ¡ }t| jƒ‰| j ¡ ‰g ‰g ‰‡ ‡‡‡‡‡fdd„}x@|D ]8\}}|dkr^ˆ |¡ qB|ƒ  ˆ ˆ| |f¡ g ‰qBW |ƒ  |d k	rˆrˆd \}}ˆdd … g  }‰|r|d |¡ g‰|ƒ  ˆd \}	}
ˆ d|ˆ |
d gf¡ ||
dd … fˆd< ˆ |¡ | j d  ˆ¡ d S )Nc                 sP   ˆsd S ˆr$t d ˆ¡tˆ d} nd ˆ¡ ¡ } ˆ r>| ˆ 7 } ˆ ˆ| f¡ d S )Nr   )r   )r>   r   ÚMAXWIDTHÚ
splitlinesr   )Zres)Úendr   Ú	maxindentÚresultÚtoformatr<   r   r    Ú	do_formatÓ   s    z+TextTranslator.end_state.<locals>.do_formatr   r   r"   ú )rP   r   ÚsumrQ   r   r   Úinsertr,   )r   r<   r[   ÚfirstZcontentr_   Z
itemindentÚitemZresult_restZ_dummyZnew_itemr   )r[   r   r\   r]   r^   r<   r    Ú	end_stateË   s0    



zTextTranslator.end_statec             C   s   |   d¡ d S )Nr   )rX   )r   Únoder   r   r    Úvisit_documentò   s    zTextTranslator.visit_documentc             C   s*   |   ¡  | j dd„ | jd D ƒ¡| _d S )Nc             s   s,   | ]$\}}|D ]}|o d | | V  qqdS )r`   Nr   )Ú.0r   r   Úliner   r   r    ú	<genexpr>ù   s   z1TextTranslator.depart_document.<locals>.<genexpr>r   )re   rJ   r   rP   rD   )r   rf   r   r   r    Údepart_documentö   s    zTextTranslator.depart_documentc             C   s    | j | j | _|  jd7  _d S )Nr"   )rM   rS   Ú_title_char)r   rf   r   r   r    Úvisit_sectionþ   s    zTextTranslator.visit_sectionc             C   s   |  j d8  _ d S )Nr"   )rS   )r   rf   r   r   r    Údepart_section  s    zTextTranslator.depart_sectionc             C   s   |   d¡ d S )Nr   )rX   )r   rf   r   r   r    Úvisit_topic  s    zTextTranslator.visit_topicc             C   s   |   ¡  d S )N)re   )r   rf   r   r   r    Údepart_topic  s    zTextTranslator.depart_topicc             C   s   |   d¡ |  d¡ d S )Nr   z-[ )rX   rW   )r   rf   r   r   r    Úvisit_rubric  s    
zTextTranslator.visit_rubricc             C   s   |   d¡ |  ¡  d S )Nz ]-)rW   re   )r   rf   r   r   r    Údepart_rubric  s    
zTextTranslator.depart_rubricc             C   s   d S )Nr   )r   rf   r   r   r    Úvisit_compound  s    zTextTranslator.visit_compoundc             C   s   d S )Nr   )r   rf   r   r   r    Údepart_compound   s    zTextTranslator.depart_compoundc             C   s   d S )Nr   )r   rf   r   r   r    Úvisit_glossary$  s    zTextTranslator.visit_glossaryc             C   s   d S )Nr   )r   rf   r   r   r    Údepart_glossary(  s    zTextTranslator.depart_glossaryc             C   s4   t |jtjƒr&|  | ¡ d ¡ tj‚|  d¡ d S )Nz: r   )Ú
isinstanceÚparentr   Ú
AdmonitionrW   ÚastextÚSkipNoderX   )r   rf   r   r   r    Úvisit_title,  s    zTextTranslator.visit_titlec             C   sf   t |jtjƒrbd|jd d  }| jj |¡}|d krD| jj d¡}|d k	rbd tt	|ƒ¡| j
 S dS )Nú#Zidsr   r   Ú.)rw   rx   r   ÚsectionrB   Z
secnumbersÚgetr   ÚmapÚstrrO   )r   rf   Z
anchornameÚnumbersr   r   r    Úget_section_number_string3  s    z(TextTranslator.get_section_number_stringc             C   s°   t |jtjƒr| j}nd}d }d dd„ | j ¡ D ƒ¡}| jrL|  	|¡| }| j
 ¡  d|d|t|ƒ  dg}t| jƒdkr˜t| jd ƒdkr˜| d¡ | jd  d|f¡ d S )	Nú^r   c             s   s"   | ]}|d  dkr|d V  qdS )r   r   r"   Nr   )rh   Úxr   r   r    rj   E  s    z.TextTranslator.depart_title.<locals>.<genexpr>z%sé   r   r   )rw   rx   r   r   rl   r   rP   r   rN   r„   rQ   r   Úlenr   )r   rf   Úcharr.   Útitler   r   r    Údepart_title>  s    
 
zTextTranslator.depart_titlec             C   s   d S )Nr   )r   rf   r   r   r    Úvisit_subtitleO  s    zTextTranslator.visit_subtitlec             C   s   d S )Nr   )r   rf   r   r   r    Údepart_subtitleS  s    zTextTranslator.depart_subtitlec             C   s   |   d¡ d S )Nz-- )rW   )r   rf   r   r   r    Úvisit_attributionW  s    z TextTranslator.visit_attributionc             C   s   d S )Nr   )r   rf   r   r   r    Údepart_attribution[  s    z!TextTranslator.depart_attributionc             C   s   d S )Nr   )r   rf   r   r   r    Ú
visit_desc_  s    zTextTranslator.visit_descc             C   s   d S )Nr   )r   rf   r   r   r    Údepart_descc  s    zTextTranslator.depart_descc             C   s   |   d¡ d S )Nr   )rX   )r   rf   r   r   r    Úvisit_desc_signatureg  s    z#TextTranslator.visit_desc_signaturec             C   s   | j dd d d S )NF)r<   r[   )re   )r   rf   r   r   r    Údepart_desc_signaturek  s    z$TextTranslator.depart_desc_signaturec             C   s   d S )Nr   )r   rf   r   r   r    Úvisit_desc_signature_linep  s    z(TextTranslator.visit_desc_signature_linec             C   s   |   d¡ d S )NrH   )rW   )r   rf   r   r   r    Údepart_desc_signature_linet  s    z)TextTranslator.depart_desc_signature_linec             C   s   d S )Nr   )r   rf   r   r   r    Úvisit_desc_namex  s    zTextTranslator.visit_desc_namec             C   s   d S )Nr   )r   rf   r   r   r    Údepart_desc_name|  s    zTextTranslator.depart_desc_namec             C   s   d S )Nr   )r   rf   r   r   r    Úvisit_desc_addname€  s    z!TextTranslator.visit_desc_addnamec             C   s   d S )Nr   )r   rf   r   r   r    Údepart_desc_addname„  s    z"TextTranslator.depart_desc_addnamec             C   s   d S )Nr   )r   rf   r   r   r    Úvisit_desc_typeˆ  s    zTextTranslator.visit_desc_typec             C   s   d S )Nr   )r   rf   r   r   r    Údepart_desc_typeŒ  s    zTextTranslator.depart_desc_typec             C   s   |   d¡ d S )Nz -> )rW   )r   rf   r   r   r    Úvisit_desc_returns  s    z!TextTranslator.visit_desc_returnsc             C   s   d S )Nr   )r   rf   r   r   r    Údepart_desc_returns”  s    z"TextTranslator.depart_desc_returnsc             C   s   |   d¡ d| _d S )Nú(r"   )rW   Úfirst_param)r   rf   r   r   r    Úvisit_desc_parameterlist˜  s    
z'TextTranslator.visit_desc_parameterlistc             C   s   |   d¡ d S )Nú))rW   )r   rf   r   r   r    Údepart_desc_parameterlist  s    z(TextTranslator.depart_desc_parameterlistc             C   s0   | j s|  d¡ nd| _ |  | ¡ ¡ tj‚d S )Nz, r   )rŸ   rW   rz   r   r{   )r   rf   r   r   r    Úvisit_desc_parameter¡  s
    z#TextTranslator.visit_desc_parameterc             C   s   |   d¡ d S )Nú[)rW   )r   rf   r   r   r    Úvisit_desc_optionalª  s    z"TextTranslator.visit_desc_optionalc             C   s   |   d¡ d S )Nú])rW   )r   rf   r   r   r    Údepart_desc_optional®  s    z#TextTranslator.depart_desc_optionalc             C   s   d S )Nr   )r   rf   r   r   r    Úvisit_desc_annotation²  s    z$TextTranslator.visit_desc_annotationc             C   s   d S )Nr   )r   rf   r   r   r    Údepart_desc_annotation¶  s    z%TextTranslator.depart_desc_annotationc             C   s   |   ¡  |  | j¡ d S )N)rX   rW   rJ   )r   rf   r   r   r    Úvisit_desc_contentº  s    z!TextTranslator.visit_desc_contentc             C   s   |   ¡  d S )N)re   )r   rf   r   r   r    Údepart_desc_content¿  s    z"TextTranslator.depart_desc_contentc             C   s   |   ¡  d S )N)rX   )r   rf   r   r   r    Úvisit_figureÃ  s    zTextTranslator.visit_figurec             C   s   |   ¡  d S )N)re   )r   rf   r   r   r    Údepart_figureÇ  s    zTextTranslator.depart_figurec             C   s   d S )Nr   )r   rf   r   r   r    Úvisit_captionË  s    zTextTranslator.visit_captionc             C   s   d S )Nr   )r   rf   r   r   r    Údepart_captionÏ  s    zTextTranslator.depart_captionc             C   s¾   |   ¡  g }x|D ]}| |d ¡ qW tdd„ |D ƒƒ}d }xh|D ]`}|d rr|  |d  |¡d ¡ |d }n|d k	r|  ddt|ƒ  ¡ |  | ¡ | j ¡ qDW | jdd t	j
‚d S )	NZ	tokennamec             s   s   | ]}t |ƒV  qd S )N)rˆ   )rh   Únamer   r   r    rj   Ù  s    z6TextTranslator.visit_productionlist.<locals>.<genexpr>z ::=z%s    r`   F)r<   )rX   r   r2   rW   Úljustrˆ   rz   rJ   re   r   r{   )r   rf   ÚnamesZ
productionÚmaxlenZlastnamer   r   r    Úvisit_productionlistÓ  s    


z#TextTranslator.visit_productionlistc             C   s,   |j d  ¡  ¡ | _|  t| jƒd ¡ d S )Nr   r;   )Úchildrenrz   r   Ú	_footnoterX   rˆ   )r   rf   r   r   r    Úvisit_footnoteå  s    zTextTranslator.visit_footnotec             C   s   | j d| j d d S )Nz[%s] )rc   )re   r¶   )r   rf   r   r   r    Údepart_footnoteê  s    zTextTranslator.depart_footnotec             C   sF   t |ƒr(t|d tjƒr(|d  ¡ | _nd| _|  t | jƒd ¡ d S )Nr   r   r;   )rˆ   rw   r   Zlabelrz   Ú	_citlabelrX   )r   rf   r   r   r    Úvisit_citationî  s    zTextTranslator.visit_citationc             C   s   | j d| j d d S )Nz[%s] )rc   )re   r¹   )r   rf   r   r   r    Údepart_citationö  s    zTextTranslator.depart_citationc             C   s
   t j‚d S )N)r   r{   )r   rf   r   r   r    Úvisit_labelú  s    zTextTranslator.visit_labelc             C   s   d S )Nr   )r   rf   r   r   r    Úvisit_legendþ  s    zTextTranslator.visit_legendc             C   s   d S )Nr   )r   rf   r   r   r    Údepart_legend  s    zTextTranslator.depart_legendc             C   s   d S )Nr   )r   rf   r   r   r    Úvisit_option_list  s    z TextTranslator.visit_option_listc             C   s   d S )Nr   )r   rf   r   r   r    Údepart_option_list  s    z!TextTranslator.depart_option_listc             C   s   |   d¡ d S )Nr   )rX   )r   rf   r   r   r    Úvisit_option_list_item  s    z%TextTranslator.visit_option_list_itemc             C   s   |   ¡  d S )N)re   )r   rf   r   r   r    Údepart_option_list_item  s    z&TextTranslator.depart_option_list_itemc             C   s
   d| _ d S )NT)Ú_firstoption)r   rf   r   r   r    Úvisit_option_group  s    z!TextTranslator.visit_option_groupc             C   s   |   d¡ d S )Nz     )rW   )r   rf   r   r   r    Údepart_option_group  s    z"TextTranslator.depart_option_groupc             C   s   | j rd| _ n
|  d¡ d S )NFz, )rÃ   rW   )r   rf   r   r   r    Úvisit_option   s    zTextTranslator.visit_optionc             C   s   d S )Nr   )r   rf   r   r   r    Údepart_option'  s    zTextTranslator.depart_optionc             C   s   d S )Nr   )r   rf   r   r   r    Úvisit_option_string+  s    z"TextTranslator.visit_option_stringc             C   s   d S )Nr   )r   rf   r   r   r    Údepart_option_string/  s    z#TextTranslator.depart_option_stringc             C   s   |   |d ¡ d S )NZ	delimiter)rW   )r   rf   r   r   r    Úvisit_option_argument3  s    z$TextTranslator.visit_option_argumentc             C   s   d S )Nr   )r   rf   r   r   r    Údepart_option_argument7  s    z%TextTranslator.depart_option_argumentc             C   s   d S )Nr   )r   rf   r   r   r    Úvisit_description;  s    z TextTranslator.visit_descriptionc             C   s   d S )Nr   )r   rf   r   r   r    Údepart_description?  s    z!TextTranslator.depart_descriptionc             C   s
   t j‚d S )N)r   r{   )r   rf   r   r   r    Úvisit_tabular_col_specC  s    z%TextTranslator.visit_tabular_col_specc             C   s   | j d  |d ¡ tj‚d S )Nr   Zcolwidth)rU   r   r   r{   )r   rf   r   r   r    Úvisit_colspecG  s    zTextTranslator.visit_colspecc             C   s   d S )Nr   )r   rf   r   r   r    Úvisit_tgroupL  s    zTextTranslator.visit_tgroupc             C   s   d S )Nr   )r   rf   r   r   r    Údepart_tgroupP  s    zTextTranslator.depart_tgroupc             C   s   d S )Nr   )r   rf   r   r   r    Úvisit_theadT  s    zTextTranslator.visit_theadc             C   s   d S )Nr   )r   rf   r   r   r    Údepart_theadX  s    zTextTranslator.depart_theadc             C   s   | j  d¡ d S )NÚsep)rU   r   )r   rf   r   r   r    Úvisit_tbody\  s    zTextTranslator.visit_tbodyc             C   s   d S )Nr   )r   rf   r   r   r    Údepart_tbody`  s    zTextTranslator.depart_tbodyc             C   s   | j  g ¡ d S )N)rU   r   )r   rf   r   r   r    Ú	visit_rowd  s    zTextTranslator.visit_rowc             C   s   d S )Nr   )r   rf   r   r   r    Ú
depart_rowh  s    zTextTranslator.depart_rowc             C   s&   d|ksd|krt dƒ‚|  d¡ d S )NZmorerowsZmorecolsz1Column or row spanning cells are not implemented.r   )ÚNotImplementedErrorrX   )r   rf   r   r   r    Úvisit_entryl  s    zTextTranslator.visit_entryc                s>   ˆ j  ‡ fdd„ˆ j ¡ D ƒ¡}ˆ j ¡  ˆ jd  |¡ d S )Nc             3   s   | ]}ˆ j  |d  ¡V  qdS )r"   N)rJ   r   )rh   r†   )r   r   r    rj   u  s    z.TextTranslator.depart_entry.<locals>.<genexpr>r   )rJ   r   rP   r   rQ   rU   r   )r   rf   r.   r   )r   r    Údepart_entrys  s     
zTextTranslator.depart_entryc             C   s$   | j rtdƒ‚|  d¡ g g| _ d S )Nz Nested tables are not supported.r   )rU   rÙ   rX   )r   rf   r   r   r    Úvisit_tabley  s    
zTextTranslator.visit_tablec                s<  d }ˆj dd … }g }d }ˆj d }|d d … ‰ d}xŠ|D ]‚}|dkrPt|ƒ}q:g }x\t|ƒD ]P\}}	t|	|| d}
|
rŽtdd„ |
D ƒƒ}nd}tˆ | |ƒˆ |< | |
¡ q^W | |¡ q:W d‡ ‡fdd	„	}‡ ‡fd
d„}x>t|ƒD ]2\}}|r
||kr
|dƒ n|dƒ ||ƒ qèW |dƒ d ˆ_ ˆjdd d S )Nr"   r   rÔ   )r   c             s   s   | ]}t |ƒV  qd S )N)r   )rh   r†   r   r   r    rj   ’  s    z.TextTranslator.depart_table.<locals>.<genexpr>ú-c                sJ   dg}x(ˆ D ] }|  | |d  ¡ |  d¡ qW ˆ d |¡ˆj ¡ d S )Nú+r‡   r   )r   rW   r   rJ   )r‰   Úoutr   )Ú
realwidthsr   r   r    Úwritesep™  s
    
z-TextTranslator.depart_table.<locals>.writesepc          	      s¢   t | Ž }x”|D ]Œ}dg}xjt|ƒD ]^\}}|r`t|ƒt|ƒ }| d| ˆ | d | ¡ ¡ n| dˆ | d  ¡ | d¡ q"W ˆ d |¡ˆj ¡ qW d S )Nú|r`   r"   r‡   r   )	r   r#   rˆ   r   r   r±   rW   r   rJ   )Úrowr   ri   rß   r%   ÚcellZ
adjust_len)rà   r   r   r    Úwriterow¡  s    

z-TextTranslator.depart_table.<locals>.writerowú=F)r<   )rÝ   )rU   rˆ   r#   r>   r2   r   re   )r   rf   r   Z
fmted_rowsZ	colwidthsZ	separatorri   Zcellsr%   rä   ZparZmaxwidthrá   rå   rã   r   )rà   r   r    Údepart_table€  s:    



zTextTranslator.depart_tablec             C   sB   |   d¡ |  d dd„ |jd jD ƒ¡d ¡ |  ¡  tj‚d S )Nr   z, c             s   s   | ]}|  ¡ V  qd S )N)rz   )rh   Únr   r   r    rj   ½  s    z,TextTranslator.visit_acks.<locals>.<genexpr>r~   )rX   rW   r   rµ   re   r   r{   )r   rf   r   r   r    Ú
visit_acksº  s
    
zTextTranslator.visit_acksc             C   s8   d|j kr |  tdƒ|d  ¡ |  tdƒ¡ tj‚d S )NZaltz[image: %s]z[image])Z
attributesrW   r	   r   r{   )r   rf   r   r   r    Úvisit_imageÂ  s    
zTextTranslator.visit_imagec             C   s8   t | jƒ}|  d¡ |  dt|  ¡ |  ¡  tj‚d S )Nr   ræ   )ra   rQ   rX   rW   rY   re   r   r{   )r   rf   r   r   r   r    Úvisit_transitionÉ  s
    

zTextTranslator.visit_transitionc             C   s   | j  d¡ d S )Nr   )rR   r   )r   rf   r   r   r    Úvisit_bullet_listÑ  s    z TextTranslator.visit_bullet_listc             C   s   | j  ¡  d S )N)rR   r   )r   rf   r   r   r    Údepart_bullet_listÕ  s    z!TextTranslator.depart_bullet_listc             C   s   | j  | dd¡d ¡ d S )NÚstartr"   )rR   r   r€   )r   rf   r   r   r    Úvisit_enumerated_listÙ  s    z$TextTranslator.visit_enumerated_listc             C   s   | j  ¡  d S )N)rR   r   )r   rf   r   r   r    Údepart_enumerated_listÝ  s    z%TextTranslator.depart_enumerated_listc             C   s   | j  d¡ d S )Néþÿÿÿ)rR   r   )r   rf   r   r   r    Úvisit_definition_listá  s    z$TextTranslator.visit_definition_listc             C   s   | j  ¡  d S )N)rR   r   )r   rf   r   r   r    Údepart_definition_listå  s    z%TextTranslator.depart_definition_listc             C   s\   | j d dkr|  d¡ n>| j d dkr*n.| j d  d7  < |  tt| j d ƒƒd ¡ d S )Nr   r‡   rñ   r"   )rR   rX   rˆ   r‚   )r   rf   r   r   r    Úvisit_list_itemé  s    zTextTranslator.visit_list_itemc             C   sF   | j d dkr| jdd n&| j d dkr,n| jd| j d  d d S )Nr   z* )rc   rñ   z%s. )rR   re   )r   rf   r   r   r    Údepart_list_itemö  s
    zTextTranslator.depart_list_itemc             C   s   t | tj¡ƒ| _d S )N)rˆ   Ztraverser   Z
classifierÚ_classifier_count_in_li)r   rf   r   r   r    Úvisit_definition_list_itemÿ  s    z)TextTranslator.visit_definition_list_itemc             C   s   d S )Nr   )r   rf   r   r   r    Údepart_definition_list_item  s    z*TextTranslator.depart_definition_list_itemc             C   s   |   d¡ d S )Nr   )rX   )r   rf   r   r   r    Ú
visit_term  s    zTextTranslator.visit_termc             C   s   | j s| jd d d S )N)r[   )rö   re   )r   rf   r   r   r    Údepart_term  s    zTextTranslator.depart_termc             C   s   |   d¡ d S )Nz : )rW   )r   rf   r   r   r    Úvisit_classifier  s    zTextTranslator.visit_classifierc             C   s$   |  j d8  _ | j s | jd d d S )Nr"   )r[   )rö   re   )r   rf   r   r   r    Údepart_classifier  s    z TextTranslator.depart_classifierc             C   s   |   ¡  d S )N)rX   )r   rf   r   r   r    Úvisit_definition  s    zTextTranslator.visit_definitionc             C   s   |   ¡  d S )N)re   )r   rf   r   r   r    Údepart_definition  s    z TextTranslator.depart_definitionc             C   s   d S )Nr   )r   rf   r   r   r    Úvisit_field_list"  s    zTextTranslator.visit_field_listc             C   s   d S )Nr   )r   rf   r   r   r    Údepart_field_list&  s    z TextTranslator.depart_field_listc             C   s   d S )Nr   )r   rf   r   r   r    Úvisit_field*  s    zTextTranslator.visit_fieldc             C   s   d S )Nr   )r   rf   r   r   r    Údepart_field.  s    zTextTranslator.depart_fieldc             C   s   |   d¡ d S )Nr   )rX   )r   rf   r   r   r    Úvisit_field_name2  s    zTextTranslator.visit_field_namec             C   s   |   d¡ | jd d d S )Nú:)r[   )rW   re   )r   rf   r   r   r    Údepart_field_name6  s    
z TextTranslator.depart_field_namec             C   s   |   ¡  d S )N)rX   )r   rf   r   r   r    Úvisit_field_body;  s    zTextTranslator.visit_field_bodyc             C   s   |   ¡  d S )N)re   )r   rf   r   r   r    Údepart_field_body?  s    z TextTranslator.depart_field_bodyc             C   s   d S )Nr   )r   rf   r   r   r    Úvisit_centeredC  s    zTextTranslator.visit_centeredc             C   s   d S )Nr   )r   rf   r   r   r    Údepart_centeredG  s    zTextTranslator.depart_centeredc             C   s   d S )Nr   )r   rf   r   r   r    Úvisit_hlistK  s    zTextTranslator.visit_hlistc             C   s   d S )Nr   )r   rf   r   r   r    Údepart_hlistO  s    zTextTranslator.depart_hlistc             C   s   d S )Nr   )r   rf   r   r   r    Úvisit_hlistcolS  s    zTextTranslator.visit_hlistcolc             C   s   d S )Nr   )r   rf   r   r   r    Údepart_hlistcolW  s    zTextTranslator.depart_hlistcolc             C   s   |   d¡ d S )Nr   )rX   )r   rf   r   r   r    Úvisit_admonition[  s    zTextTranslator.visit_admonitionc             C   s   |   ¡  d S )N)re   )r   rf   r   r   r    Údepart_admonition_  s    z TextTranslator.depart_admonitionc             C   s,   |   d¡ t|jd tjƒr(|  | j¡ d S )Nr‡   r   )rX   rw   rµ   r   Z
SequentialrW   rJ   )r   rf   r   r   r    Ú_visit_admonitionc  s    
z TextTranslator._visit_admonitionc                s   ‡ fdd„}|S )Nc                s   | j tˆ  d d d S )Nz: )rc   )re   r   )r   rf   )r°   r   r    r  l  s    zATextTranslator._make_depart_admonition.<locals>.depart_admonitionr   )r°   r  r   )r°   r    Ú_make_depart_admonitionj  s    z&TextTranslator._make_depart_admonitionZ	attentionZcautionZdangerÚerrorZhintZ	importantZnoteZtipZwarningÚseealsoc             C   s   |   d¡ d S )Nr   )rX   )r   rf   r   r   r    Úvisit_versionmodified†  s    z$TextTranslator.visit_versionmodifiedc             C   s   |   ¡  d S )N)re   )r   rf   r   r   r    Údepart_versionmodifiedŠ  s    z%TextTranslator.depart_versionmodifiedc             C   s   |   ¡  d S )N)rX   )r   rf   r   r   r    Úvisit_literal_blockŽ  s    z"TextTranslator.visit_literal_blockc             C   s   | j dd d S )NF)r<   )re   )r   rf   r   r   r    Údepart_literal_block’  s    z#TextTranslator.depart_literal_blockc             C   s   |   d¡ d S )Nr   )rX   )r   rf   r   r   r    Úvisit_doctest_block–  s    z"TextTranslator.visit_doctest_blockc             C   s   | j dd d S )NF)r<   )re   )r   rf   r   r   r    Údepart_doctest_blockš  s    z#TextTranslator.depart_doctest_blockc             C   s   |   ¡  |  jd7  _d S )Nr"   )rX   rT   )r   rf   r   r   r    Úvisit_line_blockž  s    zTextTranslator.visit_line_blockc             C   s0   |  j d8  _ | jdd d | j s,|  d¡ d S )Nr"   F)r<   r[   rH   )rT   re   rW   )r   rf   r   r   r    Údepart_line_block£  s    z TextTranslator.depart_line_blockc             C   s   d S )Nr   )r   rf   r   r   r    Ú
visit_lineª  s    zTextTranslator.visit_linec             C   s   |   d¡ d S )NrH   )rW   )r   rf   r   r   r    Údepart_line®  s    zTextTranslator.depart_linec             C   s   |   ¡  d S )N)rX   )r   rf   r   r   r    Úvisit_block_quote²  s    z TextTranslator.visit_block_quotec             C   s   |   ¡  d S )N)re   )r   rf   r   r   r    Údepart_block_quote¶  s    z!TextTranslator.depart_block_quotec             C   s   d S )Nr   )r   rf   r   r   r    Úvisit_compact_paragraphº  s    z&TextTranslator.visit_compact_paragraphc             C   s   d S )Nr   )r   rf   r   r   r    Údepart_compact_paragraph¾  s    z'TextTranslator.depart_compact_paragraphc             C   s*   t |jtjƒrt |jtjƒr&|  d¡ d S )Nr   )rw   rx   r   ry   r   r  rX   )r   rf   r   r   r    Úvisit_paragraphÂ  s    zTextTranslator.visit_paragraphc             C   s(   t |jtjƒrt |jtjƒr$|  ¡  d S )N)rw   rx   r   ry   r   r  re   )r   rf   r   r   r    Údepart_paragraphÈ  s    zTextTranslator.depart_paragraphc             C   s
   t j‚d S )N)r   r{   )r   rf   r   r   r    Úvisit_targetÎ  s    zTextTranslator.visit_targetc             C   s
   t j‚d S )N)r   r{   )r   rf   r   r   r    Úvisit_indexÒ  s    zTextTranslator.visit_indexc             C   s
   t j‚d S )N)r   r{   )r   rf   r   r   r    Úvisit_toctreeÖ  s    zTextTranslator.visit_toctreec             C   s   d S )Nr   )r   rf   r   r   r    Úvisit_pending_xrefÚ  s    z!TextTranslator.visit_pending_xrefc             C   s   d S )Nr   )r   rf   r   r   r    Údepart_pending_xrefÞ  s    z"TextTranslator.depart_pending_xrefc             C   s8   | j r4| d¡}|d k	r4|  d tt|ƒ¡| j ¡ d S )NZ	secnumberr~   )rN   r€   rW   r   r   r‚   rO   )r   rf   rƒ   r   r   r    Úvisit_referenceâ  s    
zTextTranslator.visit_referencec             C   s   d S )Nr   )r   rf   r   r   r    Údepart_referenceé  s    zTextTranslator.depart_referencec             C   s&   t  | dd¡¡}|  |¡ t j‚d S )NrŠ   r}   )r   ZTextr€   Ú
visit_Textr{   )r   rf   r.   r   r   r    Úvisit_number_referenceí  s    
z%TextTranslator.visit_number_referencec             C   s   d S )Nr   )r   rf   r   r   r    Úvisit_download_referenceó  s    z'TextTranslator.visit_download_referencec             C   s   d S )Nr   )r   rf   r   r   r    Údepart_download_reference÷  s    z(TextTranslator.depart_download_referencec             C   s   |   d¡ d S )NÚ*)rW   )r   rf   r   r   r    Úvisit_emphasisû  s    zTextTranslator.visit_emphasisc             C   s   |   d¡ d S )Nr/  )rW   )r   rf   r   r   r    Údepart_emphasisÿ  s    zTextTranslator.depart_emphasisc             C   s   |   d¡ d S )Nr/  )rW   )r   rf   r   r   r    Úvisit_literal_emphasis  s    z%TextTranslator.visit_literal_emphasisc             C   s   |   d¡ d S )Nr/  )rW   )r   rf   r   r   r    Údepart_literal_emphasis  s    z&TextTranslator.depart_literal_emphasisc             C   s   |   d¡ d S )Nz**)rW   )r   rf   r   r   r    Úvisit_strong  s    zTextTranslator.visit_strongc             C   s   |   d¡ d S )Nz**)rW   )r   rf   r   r   r    Údepart_strong  s    zTextTranslator.depart_strongc             C   s   |   d¡ d S )Nz**)rW   )r   rf   r   r   r    Úvisit_literal_strong  s    z#TextTranslator.visit_literal_strongc             C   s   |   d¡ d S )Nz**)rW   )r   rf   r   r   r    Údepart_literal_strong  s    z$TextTranslator.depart_literal_strongc             C   s   |   d¡ d S )Nr   )rW   )r   rf   r   r   r    Úvisit_abbreviation  s    z!TextTranslator.visit_abbreviationc             C   s    |  d¡r|  d|d  ¡ d S )NZexplanationz (%s))ÚhasattrrW   )r   rf   r   r   r    Údepart_abbreviation  s    
z"TextTranslator.depart_abbreviationc             C   s
   |   |¡S )N)r2  )r   rf   r   r   r    Úvisit_manpage$  s    zTextTranslator.visit_manpagec             C   s
   |   |¡S )N)r3  )r   rf   r   r   r    Údepart_manpage(  s    zTextTranslator.depart_manpagec             C   s   |   d¡ d S )Nr/  )rW   )r   rf   r   r   r    Úvisit_title_reference,  s    z$TextTranslator.visit_title_referencec             C   s   |   d¡ d S )Nr/  )rW   )r   rf   r   r   r    Údepart_title_reference0  s    z%TextTranslator.depart_title_referencec             C   s   |   d¡ d S )Nú")rW   )r   rf   r   r   r    Úvisit_literal4  s    zTextTranslator.visit_literalc             C   s   |   d¡ d S )Nr?  )rW   )r   rf   r   r   r    Údepart_literal8  s    zTextTranslator.depart_literalc             C   s   |   d¡ d S )Nr	   )rW   )r   rf   r   r   r    Úvisit_subscript<  s    zTextTranslator.visit_subscriptc             C   s   d S )Nr   )r   rf   r   r   r    Údepart_subscript@  s    zTextTranslator.depart_subscriptc             C   s   |   d¡ d S )Nr…   )rW   )r   rf   r   r   r    Úvisit_superscriptD  s    z TextTranslator.visit_superscriptc             C   s   d S )Nr   )r   rf   r   r   r    Údepart_superscriptH  s    z!TextTranslator.depart_superscriptc             C   s   |   d| ¡  ¡ tj‚d S )Nz[%s])rW   rz   r   r{   )r   rf   r   r   r    Úvisit_footnote_referenceL  s    z'TextTranslator.visit_footnote_referencec             C   s   |   d| ¡  ¡ tj‚d S )Nz[%s])rW   rz   r   r{   )r   rf   r   r   r    Úvisit_citation_referenceQ  s    z'TextTranslator.visit_citation_referencec             C   s   |   | ¡ ¡ d S )N)rW   rz   )r   rf   r   r   r    r+  V  s    zTextTranslator.visit_Textc             C   s   d S )Nr   )r   rf   r   r   r    Údepart_TextZ  s    zTextTranslator.depart_Textc             C   s   d S )Nr   )r   rf   r   r   r    Úvisit_generated^  s    zTextTranslator.visit_generatedc             C   s   d S )Nr   )r   rf   r   r   r    Údepart_generatedb  s    zTextTranslator.depart_generatedc             C   s&   d|d ksd|d kr"|   d¡ d S )NÚxrefÚclassesÚtermr/  )rW   )r   rf   r   r   r    Úvisit_inlinef  s    zTextTranslator.visit_inlinec             C   s&   d|d ksd|d kr"|   d¡ d S )NrK  rL  rM  r/  )rW   )r   rf   r   r   r    Údepart_inlinek  s    zTextTranslator.depart_inlinec             C   s   d S )Nr   )r   rf   r   r   r    Úvisit_containerp  s    zTextTranslator.visit_containerc             C   s   d S )Nr   )r   rf   r   r   r    Údepart_containert  s    zTextTranslator.depart_containerc             C   s   |   d¡ d S )Nz>>)rW   )r   rf   r   r   r    Úvisit_problematicx  s    z TextTranslator.visit_problematicc             C   s   |   d¡ d S )Nz<<)rW   )r   rf   r   r   r    Údepart_problematic|  s    z!TextTranslator.depart_problematicc             C   s.   |   d¡ |  d| ¡  ¡ |  ¡  tj‚d S )Nr   z<SYSTEM MESSAGE: %s>)rX   rW   rz   re   r   r{   )r   rf   r   r   r    Úvisit_system_message€  s    
z#TextTranslator.visit_system_messagec             C   s
   t j‚d S )N)r   r{   )r   rf   r   r   r    Úvisit_comment‡  s    zTextTranslator.visit_commentc             C   s
   t j‚d S )N)r   r{   )r   rf   r   r   r    Ú
visit_meta‹  s    zTextTranslator.visit_metac             C   sB   d|  dd¡ ¡ kr8|  d¡ |  | ¡ ¡ | jdd tj‚d S )Nr.   Úformatr   r   F)r<   )r€   r+   rX   rW   rz   re   r   r{   )r   rf   r   r   r    Ú	visit_raw  s
    
zTextTranslator.visit_rawc             C   s   d S )Nr   )r   rf   r   r   r    Ú
visit_math˜  s    zTextTranslator.visit_mathc             C   s   d S )Nr   )r   rf   r   r   r    Údepart_mathœ  s    zTextTranslator.depart_mathc             C   s   |   ¡  d S )N)rX   )r   rf   r   r   r    Úvisit_math_block   s    zTextTranslator.visit_math_blockc             C   s   |   ¡  d S )N)re   )r   rf   r   r   r    Údepart_math_block¤  s    z TextTranslator.depart_math_blockc             C   s   t d|jj ƒ‚d S )NzUnknown node: )rÙ   Ú	__class__r4   )r   rf   r   r   r    Úunknown_visit¨  s    zTextTranslator.unknown_visit)Ùr4   r5   r6   rM   rA   rW   Ú	STDINDENTrX   re   rg   rk   rm   rn   ro   rp   Zvisit_sidebarZdepart_sidebarrq   rr   rs   rt   ru   rv   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ê   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  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_warningZvisit_seealsoZdepart_seealsor  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  r1  r2  r3  r4  r5  r6  r7  r8  r:  r;  r<  r=  r>  r@  rA  rB  rC  rD  rE  rF  rG  r+  rH  rI  rJ  rN  rO  rP  rQ  rR  rS  rT  rU  rV  rX  rY  rZ  r[  r\  r^  r   r   r   r    rG   ©   sª  '	:	




rG   )r7   rK   r8   r(   Ú	itertoolsr   Zdocutilsr   r   Zdocutils.utilsr   Z	six.movesr   Zsphinxr   Zsphinx.localer   r	   Zsphinx.utilr
   Z	getLoggerr4   Zloggerr   rY   r_  r>   r@   r?   rI   rG   r   r   r   r    Ú<module>
   s"   
l