U
    N^]                     @   s8   d dl Zd dlmZ d dl mZmZ G dd deZdS )    N)listdirisdirjoinc                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#S )$DpTranslatorc                 C   s   || _ || _d S N)siterootDir)selfr   r	    r   "/home/wayne/twisted2/dullpencil.py__init__R   s    zDpTranslator.__init__c                 C   s   d| j  d | d }|S )Nz@<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>z(</title>
  <link rel="stylesheet" href="z">
</head>
<body>
)r   )r
   pathcssfilesr   r   r   preambleX   s    	zDpTranslator.preamblec                 C   s   d}|S )Nz
</body>
</html>
r   )r
   r   r   r   r   	postambleg   s    zDpTranslator.postamblec                 C   s  || _ tj|| _d| _g | _d| _d| _d| _d| _	t
| j d }d| j d }| j| | j| d}d}ddg}d}d}d}	d}
d}|t|k r$|| }|dkr|dkr||
dkr||
dkrx|d |
  }|
dkrx|	r|
d	kr|d
7 }d}	|
d	8 }
q|
dkr>|r&|d7 }n|d7 }| }|
d8 }
q|
d	kr^|d7 }d}	|
d	8 }
q|
dkr|d7 }|
d8 }
qd}
|dkrt|dkr||7 }d}n6|dkrd}d||< d}n||7 }|dkr|
d7 }
n>|dkrb|dkr\| j| | | jr2| jrd}nd}| j|d  d| _| jdkrP| j| d d}d}q|dkr| j| | |}d}n|dkr|||d  dks|||d	  dkr| j| | |}n||7 }d}n|dkr$|||d	  dkr| j| | |}n||7 }d}n:|dkr@d}d||< d}n||7 }|dkrZ|
d7 }
d}n|dkrZ|dkr|d7 }zd||< W n  tk
r   |d Y nX ||  |7  < n|dkr||  |7  < | || | }|d8 }|dkr||7 }d}n||  |7  < n>|dkrH|| dkrH||  |7  < d}n||  |7  < n|dkr|dkr|| dd  dkrd || dd  d! }|d8 }|dkr||7 }d}n||  |7  < d}nH|d"kr||  d#7  < n,|d$kr
||  d%7  < n||  |7  < |d7 }qt|dkrD| j| | |rZ| jd d}|	rp| jd
 d}	| jr| jrd}nd}| j|d  d| _| jdkr| j| d |dkr| jd& | j|   d| jS )'N r   Fr/z
/style.css'      </i>   </b><b>z<i>T
[</th>
</td>
</tr>
</table>
z:*#|!-   -----<===]z[-z--z<pre>z</pre><z&lt;&z&amp;z/
<p>Error: unterminated command somewhere!</p>
)fileNameosr   dirnamesurnamereidentidentstristable
tablestuffopenreadr   appendr   lendoParagraphisheaderunindent
IndexErrordoCmdr   r   )r
   r,   r   r   statebufcmdZcmdNestZboldZitalicZiCntics2r   r   r   toHtmlq   s&   




 







 

  

,


 




 

 
 

  
zDpTranslator.toHtmlc                 C   s<  d}| d  }|d}t|dkr|t|d d d    }|d    }|dkrj| |}n|dkr||  }n|dkr| |}n|d	kr| |}nn|d
kr| |}nZ|dkr| 	|}nF|dkr| 
|}n2|dkr| |}n|dks|dkr| |}n
| |}t|dkr8d| d }|S )Nr   []:r   r   headnavpathpersoncouplechildrentableimggalleryhttphttpsr   r   )stripsplitr8   lowerrG   rH   rI   rJ   rK   rL   rM   rN   rO   	localFile)r
   r@   ZtxtFilerC   Zcmd2aZcmdArgsrB   r   r   r   r=   ]  s8    
  
       
zDpTranslator.doCmdc                 C   s:  d}t |}|dkr.|d }| jrR|dkrR| jr<|d7 }n|d7 }|d7 }d| _| jdkrr|dkrr|| d7 }|d	krd
}t ||kr|| d	kr|d
7 }q| j|kr|| |7 }| j|kr||d
  }| jd |kr|| |d
 7 }n|dkr|d7 }n|d7 }| j|k r|d7 }| j|k r|| j }|  j|7  _|dkr\|d7 }n|dkrp|d7 }n|d7 }|  jd
7  _q$||d   }t |dkr|d dkr|| |7 }n||7 }q6|dkr|dd dkrp|dkr d| _nd| _| js(d| _|d| j d 7 }n"| jr:|d7 }n|d7 }|d7 }| jr\|d7 }n|d7 }|d
d  }|	d}t
dt |d
 D ]0}	| jr|||	 d 7 }n|||	 d 7 }q||d 7 }q6|d d d kr||d
d  7 }q6|d d! d"krB|d#7 }|d!d  d$ }t |dkr,|| |7 }n|d d d%krd}
t ||
kr||
 d&kr|
d
7 }
qX|d |
 }||
d   	|}t|
}|d'| d( |d  d) | d* 7 }|
dkr|d#7 }t |d
kr,|d
  }t |dkr,|| |7 }n|d+|  d, 7 }n|d-7 }|S ).Nr   r   z!|r   r    r!   Fz:*#!|z:*#r   rF   z
</dd>
<dd>z
</li>
<li>r   z<dl><dd>*z<ul><li>z<ol><li>z|!r   z||!Tz<table z>
<tr>
z</tr>
<tr>
z<th><td>z
</th>
<th>z
</td>
<td>r%   r#   r$   <hr>
z
 r'   r&   z<h>z</hz>
z<p>z
</p>
zWe have a problem)r8   r3   r:   r1   r;   r2   rQ   r9   r4   rR   rangestr)r
   brC   nc2cntc3s3rU   rA   levelZa2Zb2r   r   r   r9   {  s    
 
 


 






 

  
 

 $
zDpTranslator.doParagraphc                 C   sz   d}| j |krf|  j d8  _ | j| j  }|dkr:|d7 }n|dkrL|d7 }n|d7 }| jd d | _q|d	krv|d
7 }|S )Nr   r   rF   z
</dd></dl>rW   z
</li></ul>z
</li></ol>rV   r   r   )r1   r2   )r
   rd   r   rB   r   r   r   r;     s    


 zDpTranslator.unindentc                 C   s   d}|d| d 7 }|S )Nr   <h1>z</h1>
<hr>
r   )r
   argstrhtmlr   r   r   rG     s    zDpTranslator.headc                 C   s   d}| j t| jd d  d}t|dkrd}t|dkrd}tdt|d D ]}|d7 }qTtdt|d D ],}|d	| d
 ||  d 7 }|d d }qt|d7 }|S )Nr   r   r   r   z<div style="float:right;">
z..r   z/..z/ <a href=""></a>
z</div>
)r   r8   r	   rR   r\   )r
   rg   rU   rc   rA   r   r   r   rH     s    
zDpTranslator.navpathc                 C   s
   |  |S r   )rJ   r
   rf   r   r   r   rI     s    zDpTranslator.personc                 C   s   d}| d}t|}|dkr|d  | _|d|d   d |d   d 7 }td|D ]6}|dkr|d	||   7 }q^|d
||   7 }q^|dkr|d7 }|d7 }n|d| d 7 }|d7 }|S )Nr   ,r   re   r   z <i>r   r    (, )z</h1>
rZ   )rR   r8   rQ   r/   r\   )r
   rf   rg   argsra   rA   r   r   r   rJ     s     
(  
zDpTranslator.couplec           	      C   s  d}|  d}tdt|D ]}||   d}|d7 }t|dkr|d   d}t|dkr||d d | j }n| j}tdt|D ]}|d||  7 }q|d	| | d
 7 }t|dkr| |d  d  }|d| d 7 }n|d7 }|d7 }q |d7 }|S )Nz <p>Children:</p>
<dl><dd><table>r   r   (z
<tr>rl   rn   r   rY   r    ro   z<td>(z)</td>
z
<td></td>
z</tr>z
</table></dd></dl>
)rQ   rR   r\   r8   r/   rT   )	r
   rf   rg   rp   rA   ZpsrU   pp2r   r   r   rK     s(    
zDpTranslator.childrenc                 C   s
   || _ dS )Nr   )r4   rk   r   r   r   rL   7  s    .zDpTranslator.tablec           	      C   s  |  d}d}d}d}d}tdt|D ]v}||   ||< || dd  dksh|| dd  dkrr|| }q,|| d	krd
}q,|| dkrd
}q,|dkr,|}q,t|d dkrd}|dkr|d| d 7 }|r|d7 }n|r|d7 }|d7 }|d|d  d 7 }|r,|d|d  d 7 }|d7 }n8|rP|d|d  d 7 }|d7 }n|d|d  d 7 }|dkr|d| d | d 7 }n|d7 }|d7 }|dkr|d||  d 7 }nd| d  }|S )!N|r   Z150pxFr)   pxrV   %leftTrightr   z<figure style="width:z;display:inline-block;zfloat:left;zfloat:right;">
	<a href="
<img src="z" z$style="float:left;margin-right:10px;z$style="float:right;margin-left:10px;z	" style="z
max-width:z;max-height:z;">
z"max-width:100%;max-height=100%;">
ri   <figcaption>z</figcaption>
</figure>
z
[img: parameter error...] (z)
)rQ   rR   r\   r8   )	r
   rf   rp   capru   rw   rx   rA   rC   r   r   r   rM   j  sP    (
 
 


 
zDpTranslator.imgc                 C   s   |  d}d}t|dkrtdt|D ]}||   d}t|dkr\|d   }nd}t|dkrz|d   }nd}|d7 }t|dkr|d| d 7 }|d	| d
 7 }|d7 }t|dkr|d| d 7 }|d7 }q,|d7 }|S )Nr   r   rt   r   r   z<figure style="float:left;">
rz   ry   r{   z" width="100%">
</a>r|   z</figcaption>
z
</figure>
z <div style="clear:both;"></div>
)rQ   rR   r8   r\   )r
   rf   rp   rC   rA   rU   fntitler   r   r   rN     s*    
zDpTranslator.galleryc                 C   sl   d| d }| d}t|dkrht|dkrLd|d  d |d  d	 }nd|d  d |d  d	 }|S )
N<i><strike></strike></i>
rt   r   r   rz   rh   r   r~   )rR   r8   )r
   rf   rg   rp   r   r   r   rO     s    
zDpTranslator.httpc                    s  d| d }| d}t|dkrtdt|D ]}||  ||< q2|d d dkrh| j|d  }n| jd |d  }tj|stj|sd}d}d}d}	g }
g }|d  dD ]}| }|dkr|	| qt|d	kr,|d }|d	 }	g }td	t|D ]@}||  d
D ]*}| }t|dkr|	|
  qqd| j d |
  }| j|  t r fddt D }|D ]:}d}|D ]}||krd} qq|r|
	| qt|
dkr|d |
d  d }t|dks*|rq|d }|d	 |d< ||d	< d}qnxt|dkr| jd |d   t rn t| jd  d }n6| jd |d 
   t r t| jd  d }t|dkrd| d }t|d	kr||d	 d 7 }n|rb|	dkrX||	d
 | 7 }t|dkr`tdt|D ]2}|dkr:|d||  7 }n|d||  7 }q|d7 }n||7 }n||d7 }|d7 }t|
d	kr|d|
d	  d 7 }nd|d d }nHt|dkrd|d  d |d	  d }nd|d  d |d  d }|S )Nr   r   rt   r   r   Fr   rl   r    c                    s   g | ]}t t |r|qS r   r   ).0fdnr   r   
<listcomp>  s      z*DpTranslator.localFile.<locals>.<listcomp>Trz   rh   r~   r   rm   rn   ro   rE   z<i><strike> (dup: z)</strike></i>
)rR   r8   r\   rQ   r	   r   r-   isfiler   r7   rS   r   r   )r
   rf   rg   rp   rA   r   ZswitchedZdir2ZsurgivenmatchesrU   r   worddirsfoundrC   r   r   r   rT     s    
   



  



 

zDpTranslator.localFileN)__name__
__module____qualname__r   r   r   rD   r=   r9   r;   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rT   r   r   r   r   r   Q   s$   
 m^35#r   )Zos.pathr-   r   r   r   objectr   r   r   r   r   <module>   s   L