B
    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/dullPencil/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}x|t|k r,|| }|dkr|dkr|
dkr|
dkr|d |
  }x|
dkr~|	r|
d	kr|d
7 }d}	|
d	8 }
q|
dkrD|r,|d7 }n|d7 }| }|
d8 }
q|
d	krd|d7 }d}	|
d	8 }
q|
dkr|d7 }|
d8 }
qW d}
|dkrt|dkr||7 }d}n6|dkrd}d||< d}n||7 }|dkr"|
d7 }
n>|dkrj|dkrd| j| | | jr:| jr d}nd}| j|d  d| _| jdkrX| 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rHd}d||< d}n||7 }|dkrb|
d7 }
d}n|dkrb|dkr|d7 }y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rP|| dkrP||  |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 }qW t|dkrN| j| | |rd| jd d}|	rz| 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'      z</i>   z</b>z<b>z<i>T
[z</th>
z</td>
z</tr>
</table>
z:*#|!-   z----z-<=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   z[]:r   r   headnavpathpersoncouplechildrentableimggalleryhttphttpsz<b>z</b>)stripsplitr-   lowerr;   r<   r=   r>   r?   r@   rA   rB   rC   	localFile)r   r5   ZtxtFiler8   Zcmd2aZcmdArgsr7   r	   r	   r
   r2   ]  s8    
  
       
zDpTranslator.doCmdc             C   sJ  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
}x$t ||kr|| d	kr|d
7 }qW | 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 }xh| j|k r|| j }|  j|7  _|dkrb|d7 }n|dkrv|d7 }n|d7 }|  jd
7  _q*W ||d   }t |dkr|d dkr|| |7 }n||7 }qF|dkr|dd dkrx|dkrd| _nd| _| js0d| _|d| j d 7 }n"| jrB|d7 }n|d7 }|d7 }| jrd|d7 }n|d7 }|d
d  }|	d}xFt
dt |d
 D ]0}	| jr|||	 d 7 }n|||	 d 7 }qW ||d 7 }qF|d d d kr ||d
d  7 }qF|d d! d"krN|d#7 }|d!d  d$ }t |dkr<|| |7 }n|d d d%kr(d}
x*t ||
kr||
 d&kr|
d
7 }
qfW |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!|z</th>
z</td>
z</tr>
</table>
Fz:*#!|z:*#r   r:   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>z<td>z
</th>
<th>z
</td>
<td>z-<r   z----z<hr>
z
 z==r   z<h>z</hz>
z<p>z
</p>
zWe have a problem)r-   r(   r/   r&   r0   r'   rE   r.   r)   rF   rangestr)r   br8   nc2cntc3s3rI   r6   levelZa2Zb2r	   r	   r
   r.   {  s    
 
 

 






 

  
 

 $
zDpTranslator.doParagraphc             C   s~   d}xd| j |krh|  j d8  _ | j| j  }|dkr<|d7 }n|dkrN|d7 }n|d7 }| jd d | _qW |d	krz|d
7 }|S )Nr   r   r:   z
</dd></dl>rK   z
</li></ul>z
</li></ol>rJ   r   r   )r&   r'   )r   rV   r   r7   r	   r	   r
   r0     s    

 zDpTranslator.unindentc             C   s   d}|d| d 7 }|S )Nr   z<h1>z</h1>
<hr>
r	   )r   argstrhtmlr	   r	   r
   r;     s    zDpTranslator.headc             C   s   d}| j t| jd d  d}t|dkrd}t|dkrd}x"tdt|d D ]}|d7 }qVW xBtdt|d D ],}|d	| d
 ||  d 7 }|d d }qzW |d7 }|S )Nr   r   r   r   z<div style="float:right;">
z..r   z/..z/ <a href="z">z</a>
z</div>
)r   r-   r   rF   rN   )r   rX   rI   rU   r6   r	   r	   r
   r<     s    zDpTranslator.navpathc             C   s
   |  |S )N)r>   )r   rW   r	   r	   r
   r=     s    zDpTranslator.personc             C   s   d}| d}t|}|dkr|d  | _|d|d   d |d   d 7 }xDtd|D ]6}|dkr|d	||   7 }q`|d
||   7 }q`W |dkr|d7 }|d7 }n|d| d 7 }|d7 }|S )Nr   ,r   z<h1>r   z <i>z</i>r   z (z, )z</h1>
z<hr>
)rF   r-   rE   r$   rN   )r   rW   rX   argsrS   r6   r	   r	   r
   r>     s     
(  
zDpTranslator.couplec       	      C   s  d}|  d}xtdt|D ]}||   d}|d7 }t|dkr|d   d}t|dkr|d d | j }n| j}x&tdt|D ]}|d||  7 }qW |d	| | d
 7 }t|dkr| |d  d  }|d| d 7 }n|d7 }|d7 }q"W |d7 }|S )Nz <p>Children:</p>
<dl><dd><table>r   r   (z
<tr>rZ   z, r   z<td>z</td>
r[   z<td>(z)</td>
z
<td></td>
z</tr>z
</table></dd></dl>
)rE   rF   rN   r-   r$   rH   )	r   rW   rX   r\   r6   psrI   pp2r	   r	   r
   r?     s(    zDpTranslator.childrenc             C   s
   || _ dS )Nr   )r)   )r   rW   r	   r	   r
   r@   7  s    .zDpTranslator.tablec       	      C   s  |  d}d}d}d}d}xtdt|D ]v}||   ||< || dd  dksj|| dd  dkrt|| }q.|| d	krd
}q.|| dkrd
}q.|dkr.|}q.W t|d dkrd}|dkr|d| d 7 }|r|d7 }n|r|d7 }|d7 }|d|d  d 7 }|r0|d|d  d 7 }|d7 }n8|rT|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   pxrJ   %leftTrightr   z<figure style="width:z;display:inline-block;zfloat:left;zfloat:right;z">
z	<a href="z
<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%;">
z</a>
z<figcaption>z</figcaption>
</figure>
z
[img: parameter error...] (z)
)rE   rF   rN   r-   )	r   rW   r\   caprb   rd   re   r6   r8   r	   r	   r
   rA   j  sP    (
 
 


 
zDpTranslator.imgc             C   s   |  d}d}t|dkrxtdt|D ]}||   d}t|dkr^|d   }nd}t|dkr||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.W |d7 }|S )Nr   r   ra   r   r   z<figure style="float:left;">
z	<a href="z">
z
<img src="z" width="100%">
z</a>z<figcaption>z</figcaption>
z
</figure>
z <div style="clear:both;"></div>
)rE   rF   r-   rN   )r   rW   r\   r8   r6   rI   fntitler	   r	   r
   rB     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 )
Nz<i><strike>z</strike></i>
ra   r   r   z	<a href="z">r   z</a>)rF   r-   )r   rW   rX   r\   r	   r	   r
   rC     s    
zDpTranslator.httpc                s  d| d }| d}t|dkrx&tdt|D ]}||  ||< q4W |d d dkrl| j|d  }n| jd |d  }tj|stj|sd}d}d}d}	g }
g }x0|d  dD ]}| }|dkr|	| qW t|d	krDx|d }|d	 }	g }xVtd	t|D ]D}x<||  d
D ]*}| }t|dkr.|	|
  q.W qW d| j d |
  }| j|  t r fddt D }xB|D ]:}d}x|D ]}||krd}P qW |r|
	| qW t|
dkr|d |
d  d }t|dks|rP |d }|d	 |d< ||d	< d}qW nxt|dkr| jd |d   t r 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|r~|	dkrt||	d
 | 7 }t|dkr|xDtdt|D ]2}|dkrT|d||  7 }n|d||  7 }q4W |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 )Nz<i><strike>z</strike></i>
ra   r   r   Fr   rZ   r    c                s   g | ]}t t |r|qS r	   )r   r   ).0f)dnr	   r
   
<listcomp>  s    z*DpTranslator.localFile.<locals>.<listcomp>Tz	<a href="z">z</a>r   z (z, r[   z[]z<i><strike> (dup: z)</strike></i>
)rF   r-   rN   rE   r   r   r"   isfiler   r,   rG   r   r   )r   rW   rX   r\   r6   rg   ZswitchedZdir2ZsurgivenmatchesrI   r   worddirsfoundr8   r	   )rl   r
   rH     s    
   




  




 

zDpTranslator.localFileN)__name__
__module____qualname__r   r   r   r9   r2   r.   r0   r;   r<   r=   r>   r?   r@   rA   rB   rC   rH   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