
    YJg                      P    d dl Zd dlmZmZ d dl mZmZmZ d dlZ	  G d de      Z	y)    N)listdirgetcwd)isdirjoinabspathc                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z	 d Zd Z d Z!d  Z"d! Z#d" Z$d# Z%	 d$ Z&d% Z'd& Z(y')(DpTranslatorc                     || _         || _        || _        d| _        | j	                         dz   | j                   z   dz   | _        y )N   /
/style.css)siterootDir
isRealTimeid	relPrefixcssfile)selfr   r   r   s       $/home/wayne/dullPencil/dullpencil.py__init__zDpTranslator.__init__   s?    DIDL DODG>>#c)DII5DDL    c                 ,   t        | d      r| j                  }n| j                  }|t        | j                        d  j	                  d      }t        |      dk  rd}|S t        |      dk(  rd}|S d}t        t        |      dz
        D ]  }|dz  }	 |S )Npathr   r   .   ../..)hasattrr   r   lensplitrange)r   r   aafixjs        r   r   zDpTranslator.relPrefix    s     tFDIIT$	c$,, 	!	'	'	,B
2w!|3S J 
RATs
 J cSWQY !uJr   c                     | j                   si|d   dk(  r| j                         |z   }n|}|t        |      dz
     dk(  r|d t        |      dz
   }|dz   }t        j                  j                  |      r|}|S )Nr   r   r   /index.html)r   r   r   osr   isfile)r   fnf2s      r   	maybeHtmlzDpTranslator.maybeHtml1   st    ??	A#DNN,R/rB
 
CGAI#	BzB	Nrb		BrIr   c                 J    d| j                   z   dz   | j                  z   dz   }|S )Nz@<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>z(</title>
  <link rel="stylesheet" href="z">
</head>
<body>
)r   r   )r   r   ss      r   preamblezDpTranslator.preambleB   sC     II	!(	(
 +/,,7
:  Hr   c                 
    d}|S )Nz
</body>
</html>
 )r   r-   s     r   	postamblezDpTranslator.postambleR   s    AHr   c                 j   || _         t        j                  j                  |      | _        | j	                         dz   | j
                  z   dz   | _        d| _        g | _        d| _	        d| _
        d| _        d| _        d| _        d| _        	 t        | j                   d      j!                         }	 | j                  j%                  | j'                  | j                               d| _        d}ddg}d}d}d}d}d}	d| _        d| _	        d}
d}|t-        |      k  
r=||   }|dk(  r-t-        | j                        dkD  r| j/                  d|
      }
| j*                  r|
dz  }
d| _        	 |d	k(  rd}d}d}|d
z   t-        |      k  r#|||d
z    dk(  r| j1                  ||      \  }}d}nY|dz   t-        |      k  r#|||dz    dk(  r| j3                  ||      \  }}d}n%|d
z   t-        |      k  r|||d
z    dk(  r	|dz  }d
}d}|r|
|z  }
||z  }d}||z   t-        |      k  r+|||z      dv r!|dz  }||z   t-        |      k  r|||z      dv r!||z   t-        |      k\  r|
||d  z  }
||z  }a|||z      }|dk(  r|
||||z   dz    z  }
||dz   z  }|d	k(  rd| _        nd| _        d}d}|dk(  r?| j5                  ||      \  }}}|s|
|z  }
||z  }||z  }|t-        |      k\  r||   }n?|dv rn:||z   d
z   t-        |      k  r|||z   ||z   d
z    dk(  rn| j(                  rnd| _        | j*                  r|
dz  }
t-        |      dkD  r|
|z  }
d}|dk(  rd}d}||z   t-        |      k  r+|||z      dv r!|dz  }||z   t-        |      k  r|||z      dv r!||z  }|t-        |      k\  r||   }|dk(  r| j*                  s|
|z  }
|dz  }d}t7        |dz        }|dkD  r(| j(                  s|dz  }|dz  }|dkD  r| j(                  s|dk(  rk| j5                  ||      \  }}}||z  }|rE| j/                  ||
      }
|
|z  }
t-        |
      dkD  r| j                  j%                  |
       d}
d}n|
|z  }
d}q|dk(  rp|d
z   t-        |      k  r|||d
z    dk(  r| j/                  ||
      }
|
dz  }
|t-        |      k  r$||   dk7  r|dz  }|t-        |      k  r	||   dk7  r|dz  }d}|dk(  r|dz  }n|dk(  r||z  }n|dv rY|t-        |      k  r*||   dv r#|||   z  }|dz  }|t-        |      k  r||   dv r#|t-        |      k  r||   dv r|dz  }nD|dz  }n>|dv r:|dz   t-        |      k  r|||dz    d k(  rn| j                  d!d  d"k(  r|d"z  }n|dz  }t-        | j                        t-        |      dz   k(  rJ| j                  d#   dk7  r8|| j                  d t-        |       k(  r|d$d t-        |       k(  r| j                  }| j/                  ||
      }
t-        |
      dkD  r| j                  j%                  |
       d}
d}F|dk(  r|d	k(  r{d}d}d}|d
z   t-        |      k  r#|||d
z    dk(  r| j1                  ||      \  }}d}n3|dz   t-        |      k  r"|||dz    dk(  r| j3                  ||      \  }}d}|r|
|z  }
||z  }|d%k7  r|dkD  r|dkD  r|
d |  }
|dkD  r|dk(  r|r|
d&z  }
n|
d'z  }
| }|dz  }np|d(k(  r|r|
d)z  }
n|
d*z  }
| }|d(z  }nU|dk(  r&|r|
d&z  }
n|
d'z  }
| }|r|
d)z  }
n|
d*z  }
| }|dz  }n*|r|
d&z  }
d}|dz  }n|r|
d)z  }
d}|d(z  }n|
d'z  }
d}|dz  }|dkD  r|dkD  r|
d%z  }
d}|dk7  r2|	dkD  r-|	dk(  r&|d+k7  r!t-        |
      d(kD  r|
d,d d-k(  s|
d |	  }
|
d.z  }
d}	|dk(  r7|
|z  }
d}|t-        |
      k  rd}|
|   }|d/v r*|
dd  j9                         }t-        |      dk(  rd0}||z  }n|dk(  rt-        |
      dkD  r|
dd  j9                         }|j;                  d1      }|j;                  d      }|dk  r|}n|dk\  r||k  r|}|dkD  r<||   dk(  r|dz  }|dz  }|d*|d | z   d)z   z  }|dz   t-        |      k  r@|||d  z  }n6|dk  rd}nd}|||d  j9                         z  }n|dv r|
dd d k7  re|d2k(  rd| _        nd| _        | j                  sd| _        |d3z  }n| j<                  r|d4z  }n|d5z  }|d6z  }| j<                  r|d7z  }n|d8z  }|
dd  }
|
j?                  d       }tA        dt-        |      dz
        D ]%  }| j<                  r|||   d9z   z  }|||   d:z   z  }' ||d#   z  }nH|dz   t-        |
      k  r6|
||dz    d;k(  r*d}|}|t-        |
      k  r,|
|   dk7  r$||
|   z  }|dz  }|t-        |
      k  r	|
|   dk7  r$d}d}|t-        |      k  r$||   d<k(  r|dz  }|t-        |      k  r	||   d<k(  r|d | }||d  j9                         j?                  |      }tC        |      }|d=|z   d+z   |d   j9                         z   d>z   |z   d?z   z  }|dk(  r|dz  }t-        |      dkD  r&|d   j9                         }t-        |      dkD  r||z  }||z  }t-        |      dkD  r|}
|dz  }d}	t-        |      dkD  r|}
|dz  }d}nE|dk(  r"| j5                  ||      \  }}}|
|z  }
||z  }
|
|z  }
|d%k(  r|dz  }|dk(  r|	dz  }	|dz  }|t-        |      k  r
=t-        |
      dkD  r| j                  j%                  |
       d}
|r| j                  j%                  d)       d}|r| j                  j%                  d&       d}t-        | j                        dkD  r*| jE                  |
      }
t-        | j                        dkD  r*| j*                  r"| j                  j%                  d@       d| _        |dkD  r| j                  j%                  dA       | j                  j%                  | jG                                djI                  | j                        S #  t#        d| j                          Y yxY w)BNr   r    r   FrFailed to read:z</p>
<   z<!--T   <pre>z<br>z 	r   
[z<=\----<p>r    -<hr>
\%:*#|!|||z:|z                '</i><i>   </b><b>><!&mdash;z:*#\z&nbsp;:!
<tr>
</th>
</td>
</tr>
<tr>
<th><td>
</th>
<th>
</td>
<td>===<h</h>
z</p>/
<p>Error: unterminated command somewhere!</p>
)%fileNamer'   r   dirnamer   r   r   surnamereenvidentidentstristable
tablestuffpbufopenreadprintappendr.   isHtmlisParagraphr   	adjustEnv
getCommentgetPre
getCommandintstripfindisheaderr    r!   strcloseEnvr1   r   ) r   rc   r-   statecmdcmdNestbolditaliciCntdCntbuficbuf2cntgotOnesCntc2embeddednewEnvr$   s2s4s3kk2ab2levelc3a2c4s                                    r   wwToHtmlzDpTranslator.wwToHtml^   s   DM+DI>>#c)DII5DDL DLDGDHDJDMDLDODI
t}}c
"
'
'
)a, 	GGNNDMM499.0 DK
 Eb'CGDFDD DDH
C	A
c!f*
A$a 
!txx=1C)#
/#"$
	@ 8$#&qSCF]q1Q3x61q+HDFsc!f}1QqSW!4{{1Q'HDFsc!f}1QqSV!3FNDCF4KCHA fs1vo!AdF)u"4daidafs1vo!AdF)u"4T6SV
12,#
t)!
qvY:
1QtVAX
#
tAv+!
 9Ddk!dk
 9"ooa2
$s84KCHA
s(!#a&[d!
 6\
tVAXA1QtVAdF1H#5#?
 [[
 "&dSE\St9q=#+#
 
! fs1vo!AdF)u"4daidafs1vo!AdF)u"4	T	A;
aD9!!3!83
q&!%
46{Qht{{
C-&
!)$ Qht{{
 8"ooa2
$s8
s(!..&#/C4KC3x!|ggnnc#cE 4KCE
#XqSCF]q1Q3x61 ..&#/C8OCc!f*1qAvq!c!f*1FAE$Y
D.& #X
A+& %ZCF
qtu}adNFFA CF
qtu} QZAaDDL&C-&Q$YqSCF]q1Q3x4/ xx}$fnfC-& txx=CKM)dhhrlc.AtxxV--+LS[99xxf
 nnfc+s8a<. 
!8$#&qSCF]q1Q3x61q+HDFsc!f}1QqSW!4{{1Q'HDF4KCHA8qAXfu+C(3&=3Ulc#	19Ulcx	193&=3Ulc#Ulcx	 -# &!)$-#$!)$ ,#&!)$M (T ax$8qQY18s8a<C1I$5$KcYc $9
(#!S\BQBW}qr7==?b RAHrBhbsSAW]]_GGCLWWS\q5b!1W!VQq5Uc\161q&!b!fV++"qS3r7]B"QR&LBUA12&"tQqT!9ddm&+dm||
 "&$,
""]]B)OBi'"==","Flb!"g))D/aQAq) 1!=="!}(<"<"AaD=00b1 AbEkb1s3xC!A#J$$6 baCLSVt^c!fQ CLSVt^ beCGO5	S(8
 CGO5	S(8fu:bef:##%++B/bu:bD2IObekkm3e;b@5HHb!R8^RR1U[[]r7Q;("BhbR1Bc1fae2w{"C
q&!%#X"ooa2
$s8
+#
s(!

(##Xtqyt#Xtqyt
q&!o c!f*z 3x!|
ggnncc
ggnnfd
ggnnff dhh-!
4==##7S#dhh-!
 
ggnnfd{
ggnnIK 	GGNNDNN$&77477W/s   $r r2c                    t        | j                        t        |      kD  r3| j                  |      }t        | j                        t        |      kD  r3t        | j                        dkD  r| j                  |d t        | j                         k(  rt        | j                        t        |      k(  ru| j                  d   dv r| j                  |      }nR| j                  d   dk(  r|dz  }n:| j                  d   dv r|dz  }n#| j                  d   dk(  r| j                  |      }n*| j                  |      }t        | j                        dkD  rd	| _        t        | j                        t        |      k  r|t        | j                           }|dk(  r|d
z  }nm|dk(  r|dz  }nb|dk(  r|dz  }nW|dk(  r|dz  }nL|dv r6t        | j                        dkD  r|d| j                  z   dz   z  }n|dz  }d}n|dk(  r|dz  }n|dz  }d}| xj                  |z  c_        t        | j                        t        |      k  r|S )Nr   rH   rA   rS   
</dd>
<dd>*#
</li>
<li>rB   Fz	<cripple>z	<dl><dd>
*z	<ul><li>
#z	<ol><li>
rD   <table rO   z<table>rE   z<div class="definition">
z<div class="indent">
r>   )r   rg   r|   	emptyLinerk   )r   r   r   r   s       r   rs   zDpTranslator.adjustEnv  s   
 dhh-#f+
%T]]C-As#dhh-#f+
%
dhh-!
	VNS]+	+txx=CK'
 XXb\T!--&Cxx|s"= Cxx|t#= Cxx|s"--&CMM3 c) dhh-!
. DN dhh-#f+
%#dhh- b	tSK'S9c\)c9c\)c9c\)c:t!#SIdoo,Ec,I%ISYc9c99c 	''
hh"nh! dhh-#f+
%$ Jr   c                 x    d}||d  j                  d      }|dkD  r|dz   }nt        |      |z
  }||||z    }||fS )Nr3   z-->r   rL   ry   r   r   r-   r   r   r$   r   s         r   rt   zDpTranslator.getComment  sP    
C	!"

5A1uAaCcA
#
Aae*C9r   c                 x    d}||d  j                  d      }|dkD  r|dz   }nt        |      |z
  }||||z    }||fS )Nr3   </pre>r      r   r   s         r   ru   zDpTranslator.getPre  sP    
C	!"

8A1uAaCcA
#
Aae*C:r   c                    d}d}d}ddg}d}||z   t        |      k  r}|||z      }|dv r||z  }|dz  }ne|dk(  r|dz  }|dz  }nT|dk(  r|d	z  }|dz  }nC|d
k(  rG||z   t        |      k  r,|||z      d
k(  r ||z  }|dz  }||z   t        |      k  r|||z      d
k(  r(n|dk(  rD||z   t        |      k  r|||z      dk(  r||z  }|dz  }||z   t        |      k  r|||z      dk(  r'nd}d||<   ||z   t        |      k  r|||z      }|dk(  r|dz  }	 d||<   ||xx   |z  cc<   nT|dk(  rB||xx   |z  cc<   | j                  ||         \  }	}|dz  }|dk(  r||	z  }n2||xx   |	z  cc<   n||xx   |z  cc<   |dz  }||z   t        |      k  r|dz  }|||fS # t        $ r |j                  d       Y w xY w)Nr3   r   Tr   []r6   &lt;&&amp;r?   rI   r;   ])r   
IndexErrorrp   doCmd2)
r   r-   r   r   r   r   r~   r   r   r   s
             r   rv   zDpTranslator.getCommand  sD   
C
CHb'CGus1v~
AcE(a	
dqq8vq8wq8ec!fn1S5S
(#
(# ec!fn1S5S 8ec!fn1S5S
(#
(# ec!fn1S5S
 Gec!fn#h!#XqLGc'l LALCxLAL++s7|5KBxqLG!|Ric'lb l LAL (#1 ec!fn4 	q h-  jj"s   F! !F>=F>c                    || _         t        j                  j                  |      | _        | j	                         dz   | j
                  z   dz   | _        d| _        g | _        d| _	        d| _
        d| _        d| _        	 t        | j                   d      j                         }	 | j                  j!                  | j#                  | j                               d}d}ddg}d}d}d}d}	d}
d}|t%        |      k  r||   }|dk(  r7|dk7  r|	dkD  r|	d	kD  r|d |	  }|	d	kD  r|	d
k(  r|r|dz  }n|dz  }| }|	d
z  }	np|	dk(  r|r|dz  }n|dz  }| }|	dz  }	nU|	dk(  r&|r|dz  }n|dz  }| }|r|dz  }n|dz  }| }|	dz  }	n*|r|dz  }d}|	d
z  }	n|r|dz  }d}|	dz  }	n|dz  }d}|	d
z  }	|	d	kD  r|	dkD  r|dz  }d}	|dk7  r2|
dkD  r-|
d
k(  r&|dk7  r!t%        |      dkD  r|dd
 dk(  s|d |
  }|dz  }d}
|dk(  rt%        |      dkD  r||z  }d	}n|dk(  rd	}d||<   d}n||z  }|dk(  r|	d	z  }	|dk(  r|
d	z  }
n|d	k(  r|dk(  r| j                  j!                  | j'                  |             | j                  r6| j(                  rd}nd}| j                  j!                  |dz          d| _        | j                  dkD  r*| j                  j!                  | j+                  d             d}d}n|dv r0| j                  j!                  | j'                  |             |}d}n|dk(  rF|||dz    dk(  r-| j                  j!                  | j'                  |             |}n||z  }|
d	z  }
d}nu|dk(  rA|||d
z    d k(  r-| j                  j!                  | j'                  |             |}n||z  }d}n/|dk(  rd	}d||<   d}n||z  }|dk(  r|	d	z  }	d}n|dk(  r|dk(  r|d	z  }	 d||<   ||xx   |z  cc<   n|d!k(  rA||xx   |z  cc<   | j/                  ||         }|d	z  }|dk(  r||z  }d}n||xx   |z  cc<   n|dk(  r||   d"k(  r||xx   |z  cc<   d}n||xx   |z  cc<   nx|dk(  rs|d!k(  r;||   d#d  d$k(  r0d%||   dd# z   d&z   }|d	z  }|dk(  r||z  }d}nC||xx   |z  cc<   d}n3|d'k(  r||xx   d(z  cc<   n |d)k(  r||xx   d*z  cc<   n||xx   |z  cc<   |d	z  }|t%        |      k  rt%        |      dkD  r*| j                  j!                  | j'                  |             |r| j                  j!                  d       d}|r| j                  j!                  d       d}| j                  r6| j(                  rd}nd}| j                  j!                  |dz          d| _        | j                  dkD  r*| j                  j!                  | j+                  d             |dkD  r| j                  j!                  d+       | j                  j!                  | j1                                dj3                  | j                        S #  t        d| j                          Y yxY w# t,        $ r |j!                  d       Y w xY w),Nr   r   r3   r   Fr4   r5   rI   r   r   rJ   rK   rL   rM   rN   r8   Tr?   rO   rP   rQ   rR   r:   r;   rV   rW   </tr>
</table>
z:*#|!r7   r<   r^   r]   r   z[-rG   z--r9   r   r6   r   r   r   rb   )rc   r'   r   rd   r   r   r   re   rf   rh   ri   rj   rk   rm   rn   ro   rp   r.   r   doParagraphrz   unindentr   doCmdr1   r   )r   rc   r-   r}   r   r~   r   r   r   r   r   r   r   r   s                 r   toHtmlzDpTranslator.toHtml  s   DM+DI>>#c)DII5DDL DLDGDJDMDLDO
t}}c
"
'
'
)a  	GGNNDMM499.0 E
Cb'CGDFDD	A
c!f*
A$a	!8qAXfu+C(3&=3Ulc#	19Ulcx	193&=3Ulc#Ulcx	 -# &!)$-#$!)$ ,#&!)$M (T ax$8qQY18s8a<C1I$5$KcYc $9X\1HCE#X'#g,%
(##Xtqyt#XtqytA:9
''..$**C1
3 \\}}9b "GGNNB!446 DLZZ!^TWW^^T]]A-?A#%'\
''..$**C1
3#%#X q1XGGNND,,c35C1HC
!)$%#Xq1XGGNND,,c35C1HC%#X'#g,%
(##Xtqyt%A:8
Q,'CL g,!
,#X
g,!
,zz3w<)"
Q,'\2ICELBL#X#g,$.
g,!
,%
g,!
,A:8GRS)T1Wa++h6"
Q,'\2ICELBLE#Xs7|v-|#Xs7|w.|'lal 1faS c!f*V 3x!|
ggnnd&&-/ 
ggnnfd
ggnnff ||	YB
ggnnb..0dlzzA~tww~~t}}a'9;{
ggnnIK 	GGNNDNN$&77477M/F  JJs   ?$Y +Y. Y+.ZZc                    d}d| _         d}|j                  d      j                         }|j                  d      }t        |      dkD  rk|t        |d         dz   d  j                         }|d   j                         j	                         }|dv rd}|d	k(  r| j                  |      }n|d
k(  r| j                         }n|dk(  r| j                  |      }n|dk(  r| j                  |      }n|dk(  r| j                  |      }n|dk(  r| j                  |      }n|dk(  r| j                  |      }n|dk(  r| j                  |      }nz|dk(  r| j                  |      }nc|dk(  r| j                  |      }nL|dk(  r| j                  |      }n5|dk(  s|dk(  r| j!                  |      }nd| _         n| j#                  |      }| j                   s|d|z   dz   z  }||fS )NTFr3   r   rS   r   r   )headnavpathchidrentableimggallerydirr   r   personcouplechildrenr   r   r   r   mp3
mp3shufflehttphttps<em><s>	</s></em>)	doCmdDonerx   r    r   lowerhead2navpath2r   r   r   table2img2r   dir2mp32mp3shuffle2http2	localFile)r   r~   r   r   cmd2r   cmdArgsr   s           r   r   zDpTranslator.doCmd2  s   HDN	B99T?  "D

3A
1vzS1Yq[\"((*g
A$**,


a 
H	H;4::w#8b	>4==?b=4;;#9b=4;;#9b
?4=='#;b<4;;#9b:499g#7b	>4<<#:b:499g#7b:499g#7b4#3#3W#>b;!w,TZZ-?
 #DN >>4!b>>IOk))b >r   c                    d}|j                  d      j                         }|j                  d      }t        |      dkD  r\|t        |d         dz   d  j                         }|d   j                         j                         }|dk(  r| j	                  |      }n|dk(  r| j                         }n|dk(  r| j                  |      }n|d	k(  r| j                  |      }n|d
k(  r| j                  |      }n|dk(  r| j                  |      }n|dk(  r| j                  |      }n|dk(  r| j                  |      }nr|dk(  r| j                  |      }n[|dk(  r| j                  |      }nD|dk(  r| j                  |      }n-|dk(  s|dk(  r#| j                  |      }n| j!                  |      }t        |      dk(  rd|z   dz   }|S )Nr3   r   rS   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )rx   r    r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r~   r   r   r   r   r   s          r   r   zDpTranslator.doCmdK  s   	B99T?  "D

3A
1vzS1Yq[\"((*g
A$**,


a ;499g#7b	>4<<>b=4;;#9b=4;;#9b
?4=='#;b<4::w#8b:488W#6b	>4<<#:b:488W#6b:488W#6b4??G#=b;!w,TYY-> >>4!b
2w!|s?[(bIr   c                 &   d}t        |      }|dkD  r|d   }| j                  r'|dvr#| j                  r|dz  }n|dz  }|dz  }d| _        | j                  dkD  r|dvr|| j	                  d      z  }|d	v rrd
}t        |      |kD  r"||   d	v r|d
z  }t        |      |kD  r||   d	v r| j                  |kD  r|| j	                  |      z  }| j                  |k(  rB||d
z
     }| j
                  d   |k7  r|| j	                  |d
z
        z  }n|dk(  r|dz  }n|dz  }| j                  |k  rx|dz  }| j                  |k  rd|| j                     }| xj
                  |z  c_        |dk(  r|dz  }n|dk(  r|dz  }n|dz  }| xj                  d
z  c_        | j                  |k  rd||d  j                         }t        |      dkD  r|d   dv r|| j                  |      z  }|S ||z  }|S |dv r|dd dk7  ru|dk(  rd| _        nd| _        | j                  sd| _        |d| j                  z   dz   z  }n| j                  r|dz  }n|dz  }|dz  }| j                  r|dz  }n|dz  }|d
d  }|j                  d      }t        dt        |      d
z
        D ]%  }	| j                  r|||	   dz   z  }|||	   dz   z  }' ||d   z  }|S |d d  d!k(  rL|d"z  }|d d  j                  d#      j                         }t        |      dkD  r|| j                  |      z  }|S |d d d$k(  rd}
t        |      |
kD  r$||
   d%k(  r|
d
z  }
t        |      |
kD  r	||
   d%k(  r|d |
 }||
d  j                         j                  |      }t        |
      }|d&|z   d'z   |d   z   d(z   |z   d)z   z  }|
dk(  r|d"z  }t        |      d
kD  rP|d
   j                         }t        |      dkD  r/|| j                  |      z  }|S |d*|j                         z   d+z   z  }|S |d,z  }|S )-Nr3   r   z!|rV   rW   r   Fz:*#!|rC   r   rH   rS   r   r   r:   z<dl><dd>r   z<ul><li>z<ol><li>rD   r   rF   rT   Tr   z>
<tr>
rX   rY   rZ   r[   r\   r7   r<   r@   z
 r]   r^   r_   rO   r`   ra   r=   z
</p>
zWe have a problem)r   rj   rz   rh   r   ri   rx   r   rk   r    r!   r{   )r   br   nr   r   r   r   r   r   r   r   r   s                r   r   zDpTranslator.doParagraphj  s   	BAA1uQ4b	"D.=="	/"Iob
!!	aBg-dmmQ6H0H	u!fslqv
(# !fslqv::R4==##77R::Qx"]]2"$$--Q((BSyM!bM!b::
*"

S 4::BMMRMSyJbsJbJbJJ!OJ 

S  stW]]_r7Q;2a5D="0@0@"0F*F"d Ic Bhbb Ia :Qq6T>3Y %DL)doo-;;B}}bIob	/"/!B]]B&LBfe!GGDMq#a&(# 	+A]]B!A$"66Bad]**	+ 	ae8 I/ Ra5F?
habEKK$$&q6A:
  !%
%"& I% Ra5D=!fun5S
1*% !fun5SvYuvY__$$R(Z
dRi#o1%-2U::A:
."r7Q;!u{{}"Wq[$""B((B
 I 	eaggi*,, I 	bIr   c                    t        | j                        dkD  rod}t        | j                        }| j                  d   }|dk(  r<|dz  }| j                  dd  j                         }t        |      dkD  r||z  }|dz  }n|dv rD|dz  }t        | j                        dkD  r || j                  dd  j                         z  }|d	z  }n|d
v r| j                  dd dk7  rt|dk(  rd| _        nd| _        | j                  sd| _        |dz  }n| j                  r|dz  }n|dz  }|dz  }| j                  r|dz  }n|dz  }| j                  dd  | _        | j                  j                  d      }t        dt        |      dz
        D ]%  }| j                  r|||   dz   z  }|||   dz   z  }' ||d   z  }n|dk\  r| j                  d d dk(  r|dz  }n| j                  d d dk(  rd}t        | j                        |kD  rB| j                  |   dk(  r0|dz  }t        | j                        |kD  r| j                  |   dk(  r0| j                  d | }| j                  |d  j                         j                  |      }t        |      }	|d|	z   dz   |d   z   d z   |	z   d!z   z  }|dk(  r|dz  }t        |      dkD  r|d   j                         }
t        |
      dkD  r||
z  }n| j                  d d" d#k(  r|| j                  z  }nat        | j                        dk(  s| j                  d   d$k7  r|d%z  }| xj                  d$z  c_        || j                  j                         z  }| j                  j                  |       d| _        y y )&Nr   r3   rS   z<dd>r   z</dd>
r   z<li>z</li>
rD   r   rF   rT   TFrU   rV   rW   rX   rY   rZ   r[   r\   rH   r7   r<   r@   r]   r^   r_   rO   r`   ra   r8   r9   pr=   )r   rl   rx   rz   rj   r    r!   r{   rg   rf   rp   )r   r   r   r   r   r   r   r   r   r   r   s              r   flushBufzDpTranslator.flushBuf  si   
499~b
dii.a99Q<b	s
fYYqr]  "
 r7Q;b
i:
ftyy>ArTYYqr]%8%8%::r
i:99Qq>T!3Y %DL*B}}bIob	/"/!B]]B&LBfiim$)IIOOD!q#a&(# 	+A]]B!A$"66Bad]**	+ 	ae6diimv-
h99Ra=D $))nu$5)9S)@
1*% $))nu$5)9S)@YYvYYuv$$&,,R0Z
dRi#o1%-2U::A:
."r7Q;!u{{}"Wq["HB
 99Ra=G#
dii txx=A"!4
+"
((c/(
diioo
ggnnbdiY r   c                 8   t        |      dkD  r| j                  j                  |       t        | j                        dkD  rX| j                  d   }|dk(  r| j                  j                  d       n|dk(  r| j                  j                  d       n|dk(  r| j                  j                  d       n|dk(  r| j                  j                  d	       n|d
k(  r| j                  j                  d       np|dk(  r| j                  j                  d       nO|dk(  rJ| j                  r| j
                  rd}nd}|dz  }nd}| j                  j                  |dz          d| _        t        | j                        dkD  r| j                  d d | _        yd| _        y)Nr   rH   rA   z
</cripple>r>   z
</div>
rB   rS   z</dd></dl>
r   z</li></ul>
r   z</li></ol>
rE   rV   rW   </tr>r3   z	</table>
Fr   )r   rf   rp   rg   rj   rz   )r   r   er   s       r   r|   zDpTranslator.closeEnv  s5   
3x!|TWW^^S*
488}q
((2,a	
dDGGNNN48TWW^^\38TWW^^\38TWW^^^58TWW^^^58TWW^^^58<<]]B
-"b<)	TXX	txx}DH  DHr   c                    d}| j                   |kD  rm| xj                   dz  c_         | j                  | j                      }|dk(  r|dz  }n|dk(  r|dz  }n|dz  }| j                  d d | _        | j                   |kD  rm|d	k(  r|d
z  }|S )Nr3   r   rS   z
</dd></dl>r   z
</li></ul>z
</li></ol>rH   r   r:   )rh   ri   )r   r   r-   r   s       r   r   zDpTranslator.unindent9  s    
A
**u

jjAoj
--


#a	
c	\8	\	\mmCR(dm **u
 z191Hr   c                     | j                          d}|d|z   dz   z  }| j                  j                  |       d| _        y)Nr3   <h1>z
</h1>
<hr>T)r   rf   rp   r   r   argstrhtmls      r   r   zDpTranslator.head2J  s=    MMODFVOm++DGGNNDDNr   c                      d}|d|z   dz   z  }|S )Nr3   r   z</h1>
<hr>
r0   r   s      r   r   zDpTranslator.headU  s    DFVOo--DKr   c                    | j                          d}| j                  t        | j                        dz   d  j	                  d      }t        |      dkD  rd}t        |      dkD  rZd}t        dt        |      dz
        D ]  }|dz  }	 t        dt        |      dz
        D ]  }|d	|z   d
z   ||   z   dz   z  }|d d } |dz  }| j                  j                  |       d| _        y)Nr3   r   r   r   <div style="float:right;">
r   r   r   / <a href=""></a>
</div>
T)	r   r   r   r   r    r!   rf   rp   r   r   r   r   r   r   s        r   r   zDpTranslator.navpath2]  s    MMOD		#dll#A%&'--c2A
1vz+d	Q!q#a&(# 	A
+"	q#a&(# 	A
-"$t+ad2X=
=$#2w"	 jd
ggnnddnr   c                 l   d}| j                   t        | j                        dz   d  j                  d      }t        |      dkD  rod}t        |      dkD  rZd}t	        dt        |      dz
        D ]  }|dz  }	 t	        dt        |      dz
        D ]  }|d	|z   d
z   ||   z   dz   z  }|d d } |dz  }|S )Nr3   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r    r!   r   s        r   r   zDpTranslator.navpathr  s    D		#dll#A%&'--c2A
1vz+d	Q!q#a&(# 	A
+"	q#a&(# 	A
-"$t+ad2X=
=$#2w"	 jdKr   c                 2    d| _         | j                  |      S NT)r   r   r   r   s     r   r   zDpTranslator.person  s    DN;;  r   c                    d}|j                  d      }t        |      }|dkD  r|d   j                         | _        |d|d   j                         z   dz   |d   j                         z   dz   z  }t	        d|      D ]:  }|dk(  r|d	||   j                         z   z  }"|d
||   j                         z   z  }< |dkD  r|dz  }|dz  }n|d|z   dz   z  }|dz  }d| _        |S )Nr3   ,r   r   r   z <i>rJ   r    (, )z</h1>
r@   T)r    r   rx   re   r!   r   )r   r   r   argsr   r   s         r   r   zDpTranslator.couple  s     D<<D
d)C
Qw!W]]_dl
ftAw}}&/$q'--/AFJJdQs| -!644$q'--/114dT!W]]_,,d- 
q$#+$
id
fvo	))dHDDNKr   c                    d}|j                         j                  d      }t        dt        |            D ]  }||   j                         j                  d      }|dz  }t        |      dkD  r|d   j                         j                  d      }t        |      dkD  r|d   dz   | j                  z   }n| j                  }t        dt        |            D ]  }|d||   z   z  } |d	| j                  |      z   d
z   z  }t        |      dkD  r=| j                  |d   j                  d      j                               }|d|z   dz   z  }n|dz  }|dz  }! |dz  }d| _        |S )Nz <p>Children:</p>
<dl><dd><table>r:   r   (
<tr>r   r   r   rZ   rW   r   z<td>(z)</td>
z
<td></td>
r   
</table></dd></dl>
T)rx   r    r!   r   re   r   r   )	r   r   r   r   r   psr   r   p2s	            r   r   zDpTranslator.children  sa   .D<<>%D1SY 7==?  %b
hd	R1qEKKM$q6A:dTkDLL(!ll!q#a&! 	A
tad{
!	,,y88r7Q;~~r!u{{3/5579"
'B,+
+$
-
$
god#$ 	$$DDNKr   c                      || _         d| _        yNTr3   )rk   r   r   s     r   r   zDpTranslator.table2  s    DODNr   c                     || _         	 y)Nr:   )rk   r   s     r   r   zDpTranslator.table  s    DO(T r   c                 6    | j                  |      }d| _        |S r   )r   r   r   r   r   s      r   r   zDpTranslator.img2      	6	BDNIr   c                    |j                         j                  d      }d}d}d}d}t        dt        |            D ]R  }||   j                         ||<   ||   dd  dk(  s||   dd  dk(  r||   }5||   d	k(  rd
}@||   dk(  rd
}K|dkD  sQ|}T t        |d         dkD  rd}|dkD  r|d|z   dz   z  }|r|dz  }n|r|dz  }|dz  }|d|d   z   dz   z  }|r|d|d   z   dz   z  }|dz  }n$|r|d|d   z   dz   z  }|dz  }n|d|d   z   dz   z  }|dk(  r|d|z   dz   |z   dz   z  }n|dz  }|dz  }|dkD  r|d||   z   dz   z  }|S d |z   d!z   }|S )"NrE   r   150pxFrG   pxrH   rB   leftTrightr3   z<figure style="width:z;display:inline-block;zfloat:left;zfloat:right;">
	<a href="r   
<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%;"></a><figcaption>z</figcaption>
</figure>z
[img: parameter error...] (z)
)rx   r    r!   r   )	r   r   r   capr  r  r  r   r   s	            r   r   zDpTranslator.img  s   <<>$D
C	BDE1SY Qd1g 
a	a!4!W 7f7gq5& 47|ab	q
%b()AAA}$B.(B
fK$q'!D((b	
lDG#d**
44
lT!W$t++
44
lT!W${22	2b7:5@@255BFlb	q
ntCy(+EEE I +V3e;bIr   c                 (   |j                         j                  d      }d}|dz  }t        |      dkD  rt        dt        |            D ]  }||   j                         j                  d      }t        |      dkD  r|d   j                         }nd}t        |      dkD  r|d   j                         }nd}|dz  }t        |      dkD  r|d|z   d	z   z  }|d
|z   dz   z  }|dz  }t        |      dkD  r|d|z   dz   z  }	 |dz  } |dz  }d| _        |S )Nr:   z	<center>
r   rE   r3   r   z	<figure>
r	  r  r
  z" style=width:100%;>
r  r  z</figcaption>
z
</figure>
z
</center>
T)rx   r    r   r!   r   )r   r   r   r   r   r   r)   titles           r   r   zDpTranslator.gallery?  s8   <<>%D	B,B
4y1}Qs4y! !!GMMO!!#&q6A:tzz|""q6A:A$**,%%
lr7Q;
b 6)
)"
r!$<<
<"
,"u:>
&)::
:"	 	mC!H -B DNIr   c                     | j                          | j                  |      }| j                  j                  |       d| _        yr   )r   r   rf   rp   r   r  s      r   r   zDpTranslator.dir2q  s3    MMO	6	BGGNNBDNr   c                 x   t        |      dk  rd}|d   dk(  r| j                  |z   }n| j                  dz   |z   }t        |      }|t        | j                        d  dz   }d}t        |      t        | j                        k\  rd|z   dz   }t        j                  j                  |      r|dz  }t        |      }d }|j                  |	       t        d
      D ]W  }|D ]P  }t        |      dkD  s|d   dk7  s| j                  |z   |z   }	|dk(  s3|dz  }|d|z   |z   dz   |z   dz   z  }|dz  }R Y |dz  }|S )Nr   r   r   r3   z<p><em>Directory: z
</em></p>
z<dl><dd><table>c                 "    | j                         S )N)r   )r   s    r   myFuncz DpTranslator.dir.<locals>.myFunc  s    
r   )keyr   r   z<td><a href="r   z
</a></td>
r   r   )	r   r   r   r   r'   r   r   sortr!   )
r   r   r)   locFnr   filesr  r   ffn2s
             r   r   zDpTranslator.dirz  s]   
4yA~dAw#~<<$b99s?T!b	"Bs4<< !"S(E	B
2w#dll##%'-7b		
	

v

 q 	A a1vzadckLL5(1,c aho-1D81<}LLg	( 	&&Ir   c                 6    | j                  |      }d| _        |S r   )r   r   r  s      r   r   zDpTranslator.mp32  r  r   c                     d|z   dz   }|d   dk(  r| j                   |z   }n| j                  dz   |z   }t        j                  j                  |      rd|z   dz   }|S )N<i><strike></strike></i>
r   r   z0<audio controls preload="metadata"><source src="z" type="audio/mpeg"></audio>)r   r   r'   r(   )r   r   r   r)   s       r   r   zDpTranslator.mp3  sc    6!$55DayC<<& b99s?V#b	ww~~r?&HKiidKr   c                     | j                          | j                  |      }| j                  j                  |       d| _        yr   )r   r   rf   rp   r   r  s      r   r   zDpTranslator.mp3shuffle2  s3    MMO	&	"BGGNNBDNr   c                     dt         j                        z   }dt         j                        z   }dt         j                        z   }dt         j                        z   }dt         j                        z   } xj                  dz  c_        |j                         j                  d      }d}t	        |      d	k  st	        |      dk(  rt	        |d	         d	k(  rd
g}g |D ]<  }	|	d	   dk(  r j
                  |	z   }
n j                  dz   |	z   }
t        |
      }
t	        |
      t	         j
                        k\  s[t        j                  j                  |
      r fd |
       t        j                  j                  |
      rt	        |
      d	kD  s|
d	   d
k7  sd}|
j                  d
      }|dk7  r|
|d  j                         }|dk(  s|dk(  r)j                  |
t	         j
                        d         t        dt               1t        d|
       ? t	              d	kD  rt!        t	                    D ]6  }t#        j$                  d	t	              dz
        }|   }|   |<   ||<   8 d|z   dz   d	   z   dz   |z   dz   d	   z   dz   |z   dz   }t!        t	                    D ].  }d|   z   dz   }|t	              dz
  k  r|dz  }n|dz  }||z  }0 |d|z   dz   |z   dz   |z   dz   |z   d z   |z   d!z   |z   d"z   |z   d#z   |z   d$z   |z   d%z   |z   d&z   d'z   dz   d(z   d)z   d*z   |z   d+z   z  }|S ),N
myAudioTxtmyAudioslsiaudr   r:   r3   r   r   r   c                    t        |       }|D ]  }t        |      dkD  s|d   dk7  sd}|j                  d      }|dk7  r||d  j                         }|dk(  s|dk(  r.j	                  | t        j
                        d  dz   |z          ~| dz   |z   }t        j                  j                  |      r	 |        y )Nr   r   r3   rH   .mp3.m4ar   )	r   r   rfindr   rp   r   r'   r   r   )	r)   r  r  tyr   ffmp3sr   traverseDirs	         r   r,  z,DpTranslator.mp3shuffle.<locals>.traverseDir  s    RME Q!!GGCL7u{{}"<2<++r#dll"3"45c9!;= #vax"WW]]B(
  % +r   rH   r&  r'  zmp3shuffle() skipped: zmp3shuffle() not a file: z	<div id="r   z</div>
<audio id="z" controls><source src="z." type="audio/mpeg"></audio>
<script>
  const z = [
z    ""z,
z];
z  let z = 0;
  let z = document.getElementById("z");
  z.onended = function() {
    z++;
    if (z >= z	.length) z = 0;
    let src = r;   z,];
    this.src = src;
    this.innerHTML = z'<source src=z'+src+'z" type="audio/mpeg">zV';
    this.play();
    // Show what song we are playing
    document.getElementById("z#").innerHTML = src;
  };
</script>
)r{   r   rx   r    r   r   r   r   r'   r   r(   r(  r   rp   ro   r  r!   randomrandint)r   r   r   r!  r"  r#  r$  r   r   argr)   r)  r   iijjtr-   r+  r,  s   `                @@r   r   zDpTranslator.mp3shuffle  s   c$''l*JDGG$G	c$''l	B	c$''l	B
DGG
CGGqLG <<>%D	B
4yA~#d)q.Sa\Q->Ud
 D >3 
Q3\\CYY_s"B=b	RC%	%77=="8 r
WW^^R! Wq[RUc\BABwab6<<>bV|rV| kk"S./01 -q2 ,b
2}>3H 4y1}
 c$i  "^^Ac$ik*H8RR	 	Jt#d1g- 1 		8	9Q		 		 		 	 SY !DGOCD	!a5ja6ka
a	
 	  		3	44;	<=			 		 		 		  		  !,		, -/		/0		
 	
  	 
 !#	#
$ 	  !0	0 14	4 5>	> ?U	UV(
	( )3
	34	b  Ir   c                     d|z   dz   }|j                  d      }t        |      dkD  r7t        |      dk\  rd|d   z   dz   |d   z   d	z   }nd|d   z   dz   |d   z   d	z   }d
| _        |S )Nr  r  rE   r   r   r	  " target="_blank">r   r  T)r    r   r   r   r   r   r   s       r   r   zDpTranslator.http2W  s    6!$55D<<D
4y1}	TaT!W$';;d1gENT!W$';;d1gEN
 DNKr   c                     d|z   dz   }|j                  d      }t        |      dkD  r8t        |      dk\  rd|d   z   dz   |d   z   d	z   }|S d|d   z   dz   |d   z   d	z   }|S )
Nr  r  rE   r   r   r	  r5  r   r  )r    r   r6  s       r   r   zDpTranslator.httpi  s    6!$55D<<D
4y1}	TaT!W$';;d1gEN K T!W$';;d1gENKr   c           	      v   d|z   dz   }|j                  d      }t        |      dkD  rt        dt        |            D ]  }||   j                         ||<    t        |      dk  r|j	                  |d          t        |d         dkD  r;|d   d   dk(  r0	 | j                         |d   z   |d<   | j                  dz   |d   z   }n| j                  dz   |d   z   }t        j                  j                  |      st        j                  j                  |      snd}d}d}d}	g }
g }|d   j                  d	      D ])  }|j                         }|dk7  s|j	                  |       + t        |      d
kD  rX	 |d   }|d
   }	g }t        d
t        |            D ]Y  }||   j                  d      D ]@  }|j                         }t        |      dkD  s"|j	                  |j                                B [ d| j                  z   dz   |j                         z   }| j                  |z   }t        |      rvt        |      D cg c]  }t        t        ||            s| }}|D ]'  }d}|D ]
  }||vsd} n |s|
j	                  |       ) t        |
      dkD  r|dz   |
d   z   dz   }t        |      dkD  s|rn|d   }|d
   |d<   ||d
<   d}Wt        |      dkD  r| j                  dz   |d   z   }t        |      r|t        | j                        d  dz   }nI| j                  dz   |d   j                         z   }t        |      r|t        | j                        d  dz   }t        |      dkD  r t        |      dk  r|j	                  |d          | j                         |z   }d| j                  |      z   dz   }t        |      d
kD  r||d
   dz   z  }n{|r`|	dk7  rU||	dz   |z   z  }t        |      dkD  rVt        dt        |            D ]  }|dk(  r|d||   z   z  }|d||   z   z  }  |dz  }n||z  }n||j                  d      z  }|dz  }t        |
      d
kD  rL|d|
d
   z   dz   z  }n<d|j                  d      z   dz   }n#|d   }| j                   st        j                  j                  |      r1|dz   }t        j                  j                  |      r|}|d   dz   |d<   |d   }d}|j#                  d      }|dk7  r||d  j                         }|dk(  s|dk(  rW|d t        |      t        |      z
   dz   }t        j                  j                  |      r|t        | j                        d
z   d  }t        |      dk\  rd|z   dz   |d
   z   dz   }nd|z   dz   |d   z   dz   }d| _        |S c c}w )Nr  r  rE   r   r   r   Fr3   r   r   Tr>   r	  r   r  r   r   r   r   z<i><strike> (dup: z)</strike></i>
r&   r   rH   z.txtz.wwz.html)r    r   r!   rx   rp   r   r   r'   r(   r   r   r   r   r   r   r+   r   r(  r   )r   r   r   r   r   r)   switchedr   surgivenmatchesr   r-   worddnr  dirsfoundr   f3r*   r)  s                         r   r   zDpTranslator.localFileu  s   6!$55D<<D
4y1}Qs4y!<!T!W]]_47<	TQDG,	T!W	d1gajC/		 .."T!W,QYY_tAw&YY_tAw&ggnnb"bggmmR&9as# 	$Aggi!"Wahhm	$ q6A:A$CaDED1SV_ 8tzz# 8!GGIq6A:t{{AGGI788 tyy3&4B"Bb{!(CAd2qk0BaCdC .! Bq[!E '..!-. W!"s(WQZ*?#*E44y1}!AQ4AaDAaDH5 8 VaZyy31%"B[c$,,'()C/D S1Q4::</Bb{DLL)*+c1d t9q=Y]DKKQ0!D($t~~d33d:$Y]DGf$$D"c))q6A: 3q6? .aAvttad{2t$1+-$. #+$ fll4((dFND\A(71:58JJJDd!336GG$ !W  WW]]B m#Bww~~r#bQ-/d1gAw""hhsm!"WABB6\R5[$SWSW_%/Br"c$))nQ&'(b t9>r!D(472V;$r!D(472V;$ DNKS Ds   ?V6V6N))__name__
__module____qualname__r   r   r+   r.   r1   r   rs   rt   ru   rv   r   r   r   r   r   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r0   r   r   r	   r	      s    E"" gX3l< P~D)Z>[@Mb<"*$!.6/f2h.d-b~@$Yr   r	   )
os.pathr'   r   r   r   r   r   r.  objectr	   r0   r   r   <module>rG     s)      ( ( y6 yr   