
    c                         d Z ddlmZmZmZ dZddlmZ ddlm	Z	 ddl
mZmZmZmZmZmZmZmZ g dZdd	gZ G d
 de	      Zy)z$Text formatting drivers for ureports    )AnyListTuplezrestructuredtext en)linesep)
BaseWriter)SectionTitleTabler   	ParagraphLinkVerbatimTextText) =-`.~^*r   c                        e Zd ZdZdeddf fdZdeddfdZdeddfdZ	ddZ
d	 Zdeddfd
Zdedeee      dee   ddfdZdedeee      dee   ddfdZdeddfdZdeddfdZdeddfdZdeddfdZ xZS )
TextWriterzVformat layouts as text
    (ReStructured inspiration but not totally handled yet)
    layoutreturnNc                 H    t         t        |   |       d| _        g | _        y )Nr   )superr   begin_format
list_levelpending_urls)selfr   	__class__s     E/usr/lib/python3/dist-packages/logilab/common/ureports/text_writer.pyr   zTextWriter.begin_format/   s!    j$,V435    c                 V   | xj                   dz  c_         | j                          | j                  |       | j                  rB| j                          | j                  D ]  \  }}| j                  d|d|        g | _        | xj                   dz  c_         | j                          y)zdisplay a section as text   z.. _`z`: N)sectionwritelnformat_childrenr   )r    r   labelurls       r"   visit_sectionzTextWriter.visit_section4   s    V$LLN"// <
suc:;< "Dr#   c                 
   dj                  t        | j                  |                  }| j                  |       	 | j                  t        | j
                     t        |      z         y # t        $ r t        d       Y y w xY w)Nr   z-FIXME TITLE TOO DEEP. TURNING TITLE INTO TEXT)	joinlistcompute_contentr'   TITLE_UNDERLINESr&   len
IndexErrorprint)r    r   titles      r"   visit_titlezTextWriter.visit_titleA   sk    T11&9:;U	CLL)$,,7#e*DE 	CAB	Cs   .A+ +BBc                 F    | j                  |       | j                          y)zenter a paragraphN)r(   r'   r    r   s     r"   visit_paragraphzTextWriter.visit_paragraphI   s    V$r#   c                 &    | j                  |       y)zenter a spanN)r(   r7   s     r"   
visit_spanzTextWriter.visit_spanN   s    V$r#   c                 V   | j                  |      }dgt        |d         z  }|D ];  }t        t        |            D ]"  }||   }t        ||   t        |            ||<   $ = |j                  dk(  r| j                  |||       n| j                  |||       | j                          y)zdisplay a table as textr   fieldN)get_table_contentr1   rangemaxklassfield_tabledefault_tabler'   )r    r   table_content
cols_widthrowindexcols          r"   visit_tablezTextWriter.visit_tableR   s    ..v6S3}Q/00
  	ECs3x E%j$'
5(93s8$D
5!E	E <<7"V]J?v}jAr#   rC   rD   c                    |D cg c]  }|dz   	 }}dj                  dgt        |      z        }|t        |      z  }|j                  d      }ddj                  |D cg c]  }d|z  	 c}      z   dz   }ddj                  |D cg c]  }d|z  	 c}      z   dz   }	| j	                  |       t        t        |            D ]  }
| j	                  d	       ||
   }t        t        |            D ]-  }| j	                  ||   ||   z         | j	                  d	       / |
d
k(  r|j                  r| j	                  |	       | j	                  |        yc c}w c c}w c c}w )zformat a tabler%    z%%-%ssz
++r   z+
r   |r   N)r-   r1   tuplesplitwriter>   rheaders)r    r   rC   rD   sizeformat_stringsformat_strings_listwtable_linesepheadsepilinejs                r"   rB   zTextWriter.default_tablea   sQ    ,664dQh6
68*s:">?'%
*;;,2237:)Fa#')F GG%O#((Z#@C!G#@AAEI 	

=!s=)* 		*AJJsO #D3t9%  

.q1DG;<

3  Av&//

7#

=)		* 7 *G#@s   E E
E#
c                     |j                   dk(  sJ t        d|d   d}|D ]  \  }}| j                  |||fz          y)zspecial case for field table   z%-r   zs: %sN)colsr   rO   )r    r   rC   rD   format_stringr<   values          r"   rA   zTextWriter.field_table|   sL     {{a+2JqMB) 	7LE5JJ}u~56	7r#   c                 8   t         | j                  t        t               z     }d| j                  z  }| xj                  dz  c_        |j                  D ]/  }| j	                  t
        ||d       |j                  |        1 | xj                  dz  c_        y)zdisplay a list layout as textz  r%   rJ   N)BULLETSr   r1   childrenrO   r   accept)r    r   bulletindentchilds        r"   
visit_listzTextWriter.visit_list   sw    3w<78'1__ 	EJJGVV<=LL	 	1r#   c                    |j                   |j                  k7  rP| j                  d|j                   z         | j                  j	                  |j                   |j                  f       y| j                  |j                         y)zadd a hyperlinkz`%s`_N)r)   r*   rO   r   appendr7   s     r"   
visit_linkzTextWriter.visit_link   sX    <<6::%JJw-.$$fllFJJ%?@JJvzz"r#   c                     | j                  d       |j                  j                         D ]  }| j                  d|z           | j                          y)z2display a verbatim layout as text (so difficult ;)z::
z    N)r'   data
splitlines)r    r   rX   s      r"   visit_verbatimtextzTextWriter.visit_verbatimtext   sC    VKK**, 	(DLL$'	(r#   c                 @    | j                  d|j                  z         y)zadd some textz%sN)rO   rk   r7   s     r"   
visit_textzTextWriter.visit_text   s    

4&++%&r#   )r   r   r   N)__name__
__module____qualname____doc__r   r   r   r+   r	   r5   r8   r:   r
   rH   r   strintrB   rA   NodeListrf   r   ri   r   rm   r   ro   __classcell__)r!   s   @r"   r   r   *   s   63 64 6
G  C% CD C
%% D **,0cO*IMc*	*677,0cO7IMc7	7 d # #$ # $ ' '$ 'r#   r   N)rs   typingr   r   r   __docformat__logilab.common.textutilsr   logilab.common.ureportsr   logilab.common.ureports.nodesr   r	   r
   rv   r   r   r   r   r0   r`   r    r#   r"   <module>r~      sI   $ + # #% , .	 	 	 6 *v' v'r#   