
    c-                     b    d Z d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 ddlmZ  G d de      Zy)	z$HTML formatting drivers for ureportszrestructuredtext en    )
BaseWriter)SectionTitleTableList	ParagraphLinkVerbatimTextText)Anyc                        e Zd ZdZddeddf fdZdedef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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 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 )
HTMLWriterzformat layouts as HTMLNsnippetreturnc                 8    t         t        |           || _        y N)superr   __init__r   )selfr   	__class__s     E/usr/lib/python3/dist-packages/logilab/common/ureports/html_writer.pyr   zHTMLWriter.__init__'   s    j$(*    layoutc                 f    d}t        |dd      }|r|d|z  z  }t        |dd      }|r|d|z  z  }|S )z5get an attribute string from layout member attributes klassNz class="%s"idz id="%s")getattr)r   r   attrsr   nids        r   handle_attrszHTMLWriter.handle_attrs+   sL    .]U**EfdD)Z#%%Er   c                     t         t        |   |       | j                  #| j	                  d       | j	                  d       yy)zbegin to format a layoutNz<html>z<body>)r   r   begin_formatr   writeln)r   r   r   s     r   r#   zHTMLWriter.begin_format6   s9    j$,V4<<LL"LL"  r   c                 b    | j                   #| j                  d       | j                  d       yy)zfinished to format a layoutNz</body>z</html>)r   r$   r   r   s     r   
end_formatzHTMLWriter.end_format=   s)    <<LL#LL#  r   c                     | xj                   dz  c_         | j                  d| j                  |      z         | j                  |       | j                  d       | xj                   dz  c_         y)z7display a section as html, using div + h[section level]   z<div%s>z</div>N)sectionr$   r!   format_childrenr&   s     r   visit_sectionzHTMLWriter.visit_sectionC   sT    Y!2!26!::;V$Xr   c                     | j                  d| j                  | j                  |      d       | j                  |       | j	                  d| j                  z         y)zdisplay a title using <hX>z<h>z</h%s>N)writer*   r!   r+   r$   r&   s     r   visit_titlezHTMLWriter.visit_titleK   sE    

d.?.?.GHIV$X,-r   c                     | j                  d| j                  |      z         | j                  |      }t        t	        |            D ]1  }||   }|dk(  r|j
                  r| j                  d       nN|dz   t	        |      k(  r|j                  r| j                  d       n| j                  d|dz  xr dxs dz         t        t	        |            D ]  }||   xs d	}|j
                  r|dk(  sK|j                  r|dk(  s:|j                  r|dz   t	        |      k(  s|j                  r&|dz   t	        |      k(  r| j                  d
|z         }| j                  d|z          | j                  d       4 | j                  d       y)zdisplay a table as htmlz	<table%s>r   z<tr class="header">r)   z<tr class="%s">   evenoddz&#160;z<th>%s</th>z<td>%s</td>z</tr>z</table>N)	r$   r!   get_table_contentrangelenrheaders	rrheaderscheaders	rcheaders)r   r   table_contentirowjcells          r   visit_tablezHTMLWriter.visit_tableQ   s_   [4#4#4V#<<=..v6s=)* 	"A"CAv&//23Q#m,,1A1A23.!a%2BF2KeLM3s8_ 
71v)__aAF((QUc-6H-H((QUc#h->LL!56LL!56
7 LL!'	"( 	Z r   c                     | j                  d| j                  |      z         t        | j                  |            D ]  }| j                  d|z          | j                  d       y)zdisplay a list as htmlz<ul%s>z<li>%s</li>z</ul>N)r$   r!   listcompute_content)r   r   r>   s      r   
visit_listzHTMLWriter.visit_listk   sZ    X 1 1& 99:,,V45 	.CLL,-	.Wr   c                 j    | j                  d       | j                  |       | j                  d       y)display links (using <p>)z<p>z</p>N)r/   r+   r&   s     r   visit_paragraphzHTMLWriter.visit_paragraphr   s(    

5V$

6r   c                     | j                  d| j                  |      z         | j                  |       | j                  d       y)rG   z<span%s>z</span>N)r/   r!   r+   r&   s     r   
visit_spanzHTMLWriter.visit_spanx   s8    

: 1 1& 99:V$

9r   c           	          | j                  d|j                  d| j                  |      d|j                  d       y)zdisplay links (using <a>)z
 <a href=""r.   z</a>N)r/   urlr!   labelr&   s     r   
visit_linkzHTMLWriter.visit_link~   s+    

vzz4;L;LV;TV\VbVbcdr   c                     | j                  d       | j                  |j                  j                  dd      j                  dd             | j                  d       y)z#display verbatim text (using <pre>)z<pre>&&amp;<&lt;z</pre>N)r/   datareplacer&   s     r   visit_verbatimtextzHTMLWriter.visit_verbatimtext   sD    

7

6;;&&sG4<<S&IJ

8r   c                     |j                   }|j                  r"|j                  dd      j                  dd      }| j                  |       y)zadd some textrQ   rR   rS   rT   N)rU   escapedrV   r/   )r   r   rU   s      r   
visit_textzHTMLWriter.visit_text   s;    {{>><<W-55c6BD

4r   r   )__name__
__module____qualname____doc__intr   r   strr!   r#   r'   r   r,   r   r0   r   rA   r   rE   r   rH   rJ   r	   rO   r
   rW   r   rZ   __classcell__)r   s   @r   r   r   $   s      t 	3 	3 	#3 #4 #$ $ $G  .% .D .!% !D !4 $ i D e e$ e $  $ r   r   N)r^   __docformat__logilab.common.ureportsr   logilab.common.ureports.nodesr   r   r   r   r   r	   r
   r   typingr   r    r   r   <module>rg      s6   $ +% /	 	 	 i ir   