a
    aXe                     @   sL   d dl Zd dlmZmZ d dl mZmZmZ d dlmZ G dd de	Z
dS )    N)listdirgetcwd)isdirjoinabspath)IPTCInfoc                   @   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#d$ Zd%S )&DpTranslatorc                 C   s   || _ || _d S N)siterootDir)selfr
   r    r   $/home/wayne/dullPencil/dullpencil.py__init__S   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   preambleY   s    	zDpTranslator.preamblec                 C   s   d}|S )Nz
</body>
</html>
r   )r   r   r   r   r   	postambleh   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}d}|t|k r|| }|dkr|dkr|
dkr|
dkr|d |
  }|
dkr|
d	kr|	r|d
7 }n|d7 }|	 }	|
d	8 }
q|
dkrN|r6|d7 }n|d7 }| }|
d8 }
q|
dkr|	rh|d
7 }n|d7 }|	 }	|r|d7 }n|d7 }| }|
d8 }
q|	r|d
7 }d}	|
d	8 }
q|r|d7 }d}|
d8 }
q|d7 }d}	|
d	8 }
q|
dkr|d7 }d}
|dkrd|dkrd|d	kr`|dkr`t|dkrJ|dd	 dks`|d |  }|d7 }d}|dkrt|dkr||7 }d}nH|dkrd}d||< d}n,||7 }|dkr|
d7 }
|dkr|d7 }n,|dkrL|dkrT| j| | | jr,| jrd}nd}| j|d  d| _| jdkrJ| j| d d}d}n|dv rz| j| | |}d}n|dkr|||d  dkr| j| | |}n||7 }|d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rD|
d7 }
d}n|dkrB|dkr|d7 }zd||< W n ty   |d Y n0 ||  |7  < n|d kr||  |7  < | || | }|d8 }|dkr||7 }d}n||  |7  < n>|dkr0|| d!kr0||  |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r,| j| | |rB| jd d}|	rX| jd
 d}	| jr| jrnd}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>z<i>   z</b>z<b>   T->z<!z&mdash;
[</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iCntZdCntics2r   r   r   toHtmlr   sB   











 












 


zDpTranslator.toHtmlc                 C   sR  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| |}n|d
kr| |}np|dkr| 	|}n\|dkr| 
|}nH|dkr| |}n4|dkr
| |}n|dks|dkr4| |}n
| |}t|dkrNd| d }|S )Nr   []:r   r   headnavpathpersoncouplechildrentableimggallerydirhttphttpsz<em><s>z	</s></em>)stripsplitr:   lowerrI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   	localFile)r   rB   ZtxtFilerE   Zcmd2aZcmdArgsrD   r   r   r   r?   ]  s(    
 
zDpTranslator.doCmdc                 C   s  d}t |}|dkr|d }| jrR|dvrR| jr<|d7 }n|d7 }|d7 }d| _| jdkrr|dvrr|| d7 }|d	v rd
}t ||kr|| d	v 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v r|| |7 }n||7 }q|dv 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 }q|d d  d!kr|d"7 }|d d  d# }t |dkr|| |7 }n|d d d$krd}
t ||
krZ||
 d%krZ|
d
7 }
q2|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   rH   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'   <hr>
z
 r)   r(   z<hr   z</hz>
z<p>z
</p>
zWe have a problem)r:   r5   r<   r3   r=   r4   rT   r;   r6   rU   rangestr)r   brE   nc2cntc3s3rX   rC   levelZa2Zb2r   r   r   r;   z  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   rH   z
</dd></dl>rZ   z
</li></ul>z
</li></ol>rY   r   r!   )r3   r4   )r   rf   r   rD   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   rI     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   r:   r   rU   r^   )r   ri   rX   re   rC   r   r   r   rJ     s    
zDpTranslator.navpathc                 C   s
   |  |S r	   )rL   r   rh   r   r   r   rK     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   rg   r   z <i>r   r    (, )z</h1>
r]   )rU   r:   rT   r1   r^   )r   rh   ri   argsrc   rC   r   r   r   rL     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   (
<tr>rn   rp   r   r\   r$   rq   z<td>(z)</td>
z
<td></td>
</tr>
</table></dd></dl>
)rT   rU   r^   r:   r1   rW   )	r   rh   ri   rr   rC   ZpsrX   pp2r   r   r   rM     s(    
zDpTranslator.childrenc                 C   s
   || _ dS )Nr!   )r6   rm   r   r   r   rN   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+   pxrY   %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%;">
rk   <figcaption>z</figcaption>
</figure>
z
[img: parameter error...] (z)
)rT   rU   r^   r:   )	r   rh   rr   caprz   r|   r}   rC   rE   r   r   r   rO   j  sJ    (


$
zDpTranslator.imgc                 C   sn  |  d}d}|d7 }t|dkrbtdt|D ](}||   d}t|dkrh|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 }nt| jd | }z2t|}	|	d }
|
d kr"|d|
  d 7 }W n2 tyV } ztt	| W Y d }~n
d }~0 0 |d7 }q6|d7 }|S )Nr!   z	<center>
r   ry   r   r   z	<figure>
r   r~   r   z" style=width:100%;>
</a>r   z</figcaption>
r   zcaption/abstractz
</figure>
z
</center>
)
rT   rU   r:   r^   r   r   decode	Exceptionprintr_   )r   rh   rr   rE   rC   rX   fntitleZffninfor   er   r   r   rP     s<    
"
zDpTranslator.galleryc           
      C   s(  t |dkrd}|d dkr(| j| }n| jd | }t|}|t | jd  d }d}t |t | jkr$d| d }tj|r$|d7 }t|}dd	 }|j|d
 tdD ]h}|D ]^}t |dkr|d dkr| j| | }	|dkr|d7 }|d| | d | d 7 }|d7 }qq|d7 }|S )Nr   .r   r   z<p><em>Directory: z
</em></p>
z<dl><dd><table>c                 S   s   |   S r	   )rV   )r   r   r   r   myFunc  s    z DpTranslator.dir.<locals>.myFunc)keyr   rt   z<td><a href="rj   z
</a></td>
ru   rv   )	r:   r   r   r   r/   r   r   sortr^   )
r   rr   r   ZlocFnrE   filesr   rC   fZfn2r   r   r   rQ     s2    zDpTranslator.dirc                 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>
ry   r   r   r   rj   r   r   )rU   r:   )r   rh   ri   rr   r   r   r   rR      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 ]}||v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   ry   r   r   Fr   rn   r    c                    s   g | ]}t t |r|qS r   )r   r   ).0r   dnr   r   
<listcomp>2      z*DpTranslator.localFile.<locals>.<listcomp>Tr   rj   r   r   ro   rp   rq   rG   z<i><strike> (dup: z)</strike></i>
)rU   r:   r^   rT   r   r   r/   isfiler   r9   rV   r
   r   )r   rh   ri   rr   rC   r   ZswitchedZdir2ZsurgivenmatchesrX   r   worddirsfoundrE   r   r   r   rW     s    
$$



"




zDpTranslator.localFileN)__name__
__module____qualname__r   r   r   rF   r?   r;   r=   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rW   r   r   r   r   r   R   s&   
 l_36/1r   )Zos.pathr/   r   r   r   r   r   Z	iptcinfo3r   objectr   r   r   r   r   <module>   s   J