B
    18™\  ã               @   s  d dl Z d dlZd dlZd dlZdZe d¡Ze d¡Ze d¡Ze d¡Z	e d¡Z
G dd	„ d	ƒZG d
d„ deƒZG dd„ dƒZG dd„ deƒZG dd„ dƒZdd„ Zdd„ Ze d¡Zdd„ Zdd„ Zejej d Zdd„ Zdd„ Zd d!„ Zed"kreƒ  dS )#é    Nz\input texinfoz^@([a-z]+)([ 	]|$)z^[ 	]*$z@[a-z]+z	[
@{}&<>]z5^\* ([^:]*):(:|[ \t]*([^\t,\n.]+)([^ \t\n]*))[ \t\n]*c               @   sb   e Zd ZdZdZdZdZdZdd„ Zdd	„ Z	d
d„ Z
ddd„Zdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚHTMLNodezÓSome of the parser's functionality is separated into this class.

    A Node accumulates its contents, takes care of links to other Nodes
    and saves itself when it is finished and all links are resolved.
    z2<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">r   Ú z</BODY></HTML>
c             C   s@   || _ || _|r|| _n|| _|| _|| _|| _|| _g | _d S )N)ÚdirnameÚnameÚtopnameÚtitleÚnextÚprevÚupÚlines)ÚselfÚdirr   r   r   r   r	   r
   © r   úW/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Tools/scripts/texi2html.pyÚ__init__g   s    zHTMLNode.__init__c             G   s   x|D ]}| j  |¡ qW d S )N)r   Úappend)r   r   Úliner   r   r   Úwritet   s    
zHTMLNode.writec             C   sJ   t | jd t| jƒ dƒ}| | j¡ | | j¡ | | j¡ | ¡  d S )Nú/Úw)	Úopenr   Úmakefiler   r   ÚprologueÚtextÚepilogueÚclose)r   Úfpr   r   r   Úflushx   s
    zHTMLNode.flushNc             C   sb   |r^|  ¡ dkrd}d}nt|ƒ}d| }|  |d|d|rBd| pDd|rPd| pRd|d	|d
¡
 d S )Nz(dir)z../dir.htmlr   z TITLE="%s"z: <A HREF="ú"z REL=z REV=ú>z</A>  
)Úlowerr   r   )r   ÚlabelÚnodenameÚrelZrevÚaddrr   r   r   r   Úlink   s    zHTMLNode.linkc             C   sÀ   t | jƒ}d | j¡| _g | _|  ¡  |  ¡  |  ¡  d | j¡}g | _| jd | j d t	| j
ƒ d | j
 d t	| jƒ d | j d t	| jƒ d | j d | | _|dkr¼d	| | _d S )
Nr   zF
<HTML><HEAD>
  <!-- Converted with texi2html and Python -->
  <TITLE>z </TITLE>
  <LINK REL=Next HREF="z	" TITLE="z">
  <LINK REL=Previous HREF="z">
  <LINK REL=Up HREF="z">
</HEAD><BODY>
é   z<P>
%s</BODY></HTML>
)Úlenr   Újoinr   Ú
open_linksÚoutput_linksÚclose_linksÚDOCTYPEr   r   r   r	   r
   r   r   )r   ÚlengthÚlinksr   r   r   ÚfinalizeŒ   s    
ZzHTMLNode.finalizec             C   s   |   d¡ d S )Nz<HR>
)r   )r   r   r   r   r)   ¥   s    zHTMLNode.open_linksc             C   s   |   d¡ d S )Nz<HR>
)r   )r   r   r   r   r+   ¨   s    zHTMLNode.close_linksc             C   sn   | j | jkr|  d| j ¡ | jd| jdd | jd| jdd | jd| jdd | j| jkrj|  d	| j¡ d S )
Nz  Contz  NextÚNext)r#   z  PrevZPreviousz  UpÚUpz  Top)Úcontr   r%   r	   r
   r   r   )r   r   r   r   r*   «   s    zHTMLNode.output_links)NN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r,   Útyper2   r   r   r   r   r%   r/   r)   r+   r*   r   r   r   r   r   Z   s   
r   c               @   s    e Zd ZdZdd„ Zdd„ ZdS )Ú	HTML3Nodez;<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML Level 3//EN//3.0">c             C   s   |   d¡ d S )Nz<DIV CLASS=Navigation>
 <HR>
)r   )r   r   r   r   r)   ¹   s    zHTML3Node.open_linksc             C   s   |   d¡ d S )Nz <HR>
</DIV>
)r   )r   r   r   r   r+   ¼   s    zHTML3Node.close_linksN)r3   r4   r5   r,   r)   r+   r   r   r   r   r8   µ   s   r8   c               @   sè  e Zd ZdZdZde d Zde d ZdZe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,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Z d6d7„ Z!d8d9„ Z"d:d;„ Z#d<d=„ Z$d>d?„ Z%d@dA„ Z&dBdC„ Z'dDdE„ Z(dFdG„ Z)dHdI„ Z*dJdK„ Z+dLdM„ Z,dNdO„ Z-dPdQ„ Z.dRdS„ Z/dTdU„ Z0dVdW„ Z1dXdY„ Z2dZd[„ Z3d\d]„ Z4d^d_„ Z5d`da„ Z6dbdc„ Z7ddde„ Z8dfdg„ Z9dhdi„ Z:djdk„ Z;dldm„ Z<dndo„ Z=dpdq„ Z>drds„ Z?dtdu„ Z@dvdw„ ZAdxdy„ ZBdzd{„ ZCd|d}„ ZDd~d„ ZEd€d„ ZFd‚dƒ„ ZGd„d…„ ZHd†d‡„ ZIdˆd‰„ ZJdŠd‹„ ZKdŒd„ ZLdŽd„ ZMdd‘„ ZNd’d“„ ZOd”d•„ ZPd–d—„ ZQd˜d™„ ZRdšd›„ ZSdœd„ ZTdždŸ„ ZUd d¡„ ZVd¢d£„ ZWd¤d¥„ ZXd¦d§„ ZYd¨d©„ ZZdªd«„ Z[d¬d­„ Z\d®d¯„ Z]d°d±„ Z^d²d³„ Z_e^Z`e_Zad´dµ„ Zbd¶d·„ Zcd¸d¹„ Zddºd»„ Zed¼d½„ Zfd¾d¿„ ZgdÀdÁ„ ZhdÂdÃ„ ZidÄdÅ„ ZjdÆdÇ„ ZkdÈdÉ„ ZldÊdË„ ZmdÌdÍ„ ZndÎdÏ„ ZodÐdÑ„ ZpdÒdÓ„ ZqdÔdÕ„ ZrdÖd×„ ZsdØdÙ„ ZtdÚdÛ„ ZudÜdÝ„ ZvdÞdß„ Zwdàdá„ Zxdâdã„ Zydädå„ Zzdædç„ Z{dèdé„ Z|dêdë„ Z}dìdí„ Z~dîdï„ Zdðdñ„ Z€dòdó„ Zdôdõ„ Z‚död÷„ Zƒdødù„ Z„dúdû„ Z…düdý„ Z†dþdÿ„ Z‡d d„ Zˆe^Z‰e_ZŠdd„ Z‹dd„ ZŒdd„ Zdd	„ ZŽd
d„ Zdd„ Zdd„ Z‘e‘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¢e‘Z£e‘Z¤e‘Z¥d0d1„ Z¦d2d3„ Z§d4d5„ Z¨d6d7„ Z©d8d9„ Zªd:d;„ Z«d<d=„ Z¬e¬Z­e¬Z®e¬Z¯e‘Z°e‘Z±e‘Z²e‘Z³e‘Z¤e‘Z´e‘Zµe‘Z¶e‘Z·e‘Z¸e‘Z¹e‘Zºe‘Z»d>d?„ Z¼d@dA„ Z½dBdC„ Z¾dDdE„ Z¿dFdG„ ZÀdHdI„ ZÁdJdK„ ZÂdLdM„ ZÃdNdO„ ZÄdPdQ„ ZÅdRdS„ ZÆdTdU„ ZÇeÇZÈdVdW„ ZÉdXdY„ ZÊdZd[„ ZËd\d]„ ZÌd^d_„ ZÍd`da„ ZÎdbdc„ ZÏddde„ ZÐdfdg„ ZÑdhdi„ ZÒdjdk„ ZÓdldm„ ZÔeÔZÕdndo„ ZÖdpdq„ Z×drds„ ZØdtdu„ ZÙdvdw„ ZÚdxdy„ ZÛdzd{„ ZÜd|d}„ ZÝd~d„ ZÞd€d„ Zßd‚dƒ„ ZàeÞZád„d…„ Zâd†d‡„ ZãeÞZädˆd‰„ ZådŠd‹„ ZæeÞZçdŒd„ ZèdŽd„ ZéeÞZêdd‘„ Zëd’d“„ ZìeêZíd”d•„ Zîd–d—„ ZïeêZðd˜d™„ Zñdšd›„ ZòeÞZódœd„ ZôdždŸ„ ZõeóZöd d¡„ Z÷d¢d£„ ZøeóZùd¤d¥„ Zúd¦d§„ ZûeùZüd¨d©„ Zýdªd«„ ZþeùZÿd¬d­„ Z d®d¯„ ZeÿZd°d±„ Zd²d³„ ZeÿZd´dµ„ Zd¶d·„ ZeZd¸d¹„ Z	dºd»„ Z
eÿ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e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 eZ!e Z"eZ#e Z$e!Z%e"Z&eZ'e Z(e'Z)e(Z*dädå„ Z+dædç„ Z,dèdé„ Z-dêdë„ Z.dìdí„ Z/dîdï„ Z0dðdñ„ Z1dòdó„ Z2dôdõ„ Z3död÷„ Z4dødù„ Z5dúdû„ Z6düdý„ Z7dþdÿ„ Z8d d„ Z9dd„ Z:dd„ Z;dd„ Z<dd	„ Z=e=Z>d
d„ Z?dd„ Z@dd„ ZAdS (  ÚTexinfoParserz&copy;z(%(id)s)z5<A NAME=footnoteref%(id)s HREF="#footnotetext%(id)s">z</A>z5<A NAME=footnotetext%(id)s HREF="#footnoteref%(id)s">z</A>
%(text)s<P>
zJ
<P>
<HR NOSHADE SIZE=1 WIDTH=200>
<STRONG><EM>Footnotes</EM></STRONG>
<P>c             C   s¸   i | _ i | _d| _d| _d | _d| _d | _d | _g | _d | _	d| _
d| _d| _d| _d| _|  ¡  g | _g | _d| _ddi| _i | _g | _d | _d | _d | _d | _g | _d| _d| _d S )Nr   ÚtmpÚ.r   Úhtmlé   )ÚunknownÚ	filenamesÚ	debuggingÚprint_headersÚnodefpÚ
nodelinenor.   ÚsavetextÚ	savestackÚhtmlhelpr   Ú
includedirr"   r   r   Ú
resetindexÚcontentsÚ	numberingÚnofillÚvaluesÚ	stackinfoÚ	footnotesÚitemargÚ
itemnumberÚ	itemindexÚnodeÚ	nodestackr2   Úincludedepth)r   r   r   r   r   Ñ   s:    
zTexinfoParser.__init__c             C   s
   || _ d S )N)rF   )r   rF   r   r   r   Úsethtmlhelpò   s    zTexinfoParser.sethtmlhelpc             C   s
   || _ d S )N)r   )r   r   r   r   r   Ú
setdirnameö   s    zTexinfoParser.setdirnamec             C   s
   || _ d S )N)rG   )r   rG   r   r   r   Úsetincludedirú   s    zTexinfoParser.setincludedirc             C   sn   |  ¡ }d}x.|r:|d dks(t |¡r:|  ¡ }|d }qW |d ttƒ… tkr^tdtf ƒ‚|  ||¡ d S )Nr=   r   ú%zfile does not begin with %r)ÚreadlineÚblprogÚmatchr'   ÚMAGICÚSyntaxErrorÚ	parserest)r   r   r   Úlinenor   r   r   Úparseþ   s    zTexinfoParser.parsec       
      C   s°  |}d| _ d| _g | _g }x"| j s>| ¡ }| jd | _|sh|rV| jsR|  |¡ g }|dkrftdƒ P |d }t |¡}|rÒ| 	d¡\}}|||… }	|	dkr¬| 
|¡ n$|rÄ| jsÀ|  |¡ g }|  ||¡ qt |¡r2d| jkr2d| jkr2|r<| js<|  |¡ | jr"|  d¡ n
|  d¡ g }q| 
|¡ qW | jrPtd	ƒ | jrltd
ƒ td| jƒ | jdkr¬x2| jrª| jd  ¡  | jd  ¡  | jd= qzW d S )Nr   r=   z*** EOF before @bye)ZnoindentZrefillÚformatZexampleÚ
z<P>
z*** Still skipping at the endz*** Stack not empty at the endz***éÿÿÿÿ)ÚdoneÚskipÚstackrY   rC   ÚprocessÚprintÚcmprogr[   Úspanr   ÚcommandrZ   rK   r   rT   rS   r/   r   )
r   r   Zinitial_linenor_   Úaccur   ÚmoÚaÚbÚcmdr   r   r   r^   	  sb     





zTexinfoParser.parserestc             C   s"   | j d k	r| j | j ¡ d| _ d S )Nr   )rD   rE   r   )r   r   r   r   ÚstartsavingA  s    
zTexinfoParser.startsavingc             C   s8   | j }t| jƒdkr*| jd | _ | jd= nd | _ |p6dS )Nr   rc   r   )rD   r'   rE   )r   rD   r   r   r   ÚcollectsavingsH  s    
zTexinfoParser.collectsavingsc             G   sj   yd  |¡}W n   t|ƒ t‚Y nX | jd k	r@| j| | _n&| jrT| j |¡ n| jrf| j |¡ d S )Nr   )r(   rh   Ú	TypeErrorrD   rB   r   rR   )r   Úargsr   r   r   r   r   R  s    

zTexinfoParser.writec             C   s&  | j d k	rtdƒ |  ¡ }| jr(|  ¡  | jr¼| jdkr |  d¡ | jd d… \}}}}|  	d|¡ |  	d|¡ |  	d|¡ | j
| jkr–|  	d| j¡ |  d¡ |  d	¡ | j ¡  d | _n`| jr| js| jjrò| jjr| jjr| jjr| j ¡  | j ¡  n| j | j¡ d | _d
| _
d S )Nz$*** Still saving text at end of noder&   z<HR>
é   r0   ZPrevr1   ZTopz</BODY>
r   )rD   rh   rr   rN   ÚwritefootnotesrB   rC   r   Ú	nodelinksr%   r"   r   r   rR   r2   r7   r   r	   r
   r/   r   rS   r   )r   Údummyr   r   r	   r
   r   r   r   Úendnode`  s6    






zTexinfoParser.endnodec          
   C   sŠ  | j dkrptd| j  d| j| jdd |rBt|d d d… dd |d dd … s^|dd … rjtddd tƒ  |  ¡ rrxô|D ]ì}t |¡}|sª| ¡ d	 }|  |¡ q€| 	d¡\}}| 	d¡\}}| 	d
¡\}}	| 	d¡\}
}| 	d¡\}}|||… }|||	… }|d dkr|}n||
|… }|||… }|  
dt|ƒd|d|d	¡ | j |¡ |  ||d … ¡ q€W nd |¡}|  |¡ d S )Nr=   ú!zprocess:ú )Úendr   é   z...rb   é   é   ru   ú:z  <LI><A HREF="z">z</A>r   )r@   rh   re   rf   ÚinmenuÚmiprogr[   ÚstripÚexpandrj   r   r   rF   Úmenuitemr(   )r   rl   r   rm   Úbgnr|   rn   ro   ÚcÚdÚeÚfÚgÚhr!   r"   Úpunctr   r   r   r   rg   €  sB    
  



 

zTexinfoParser.processc             C   sd   | j }xL|rR|d dkrRy| jt|ƒ r,dS W n tk
rB   Y nX |d d… }qW |ob|d dkS )Nrc   )ZifsetZifclearr   Úmenu)rf   rM   r'   ÚKeyError)r   rf   r   r   r   r   £  s    zTexinfoParser.inmenuc       
      C   s†  g }d}t |ƒ}x^||k rp|}t ||¡}|r<| ¡ }n|  ||d … ¡ P |  |||… ¡ || }|d }|dkr†|  d¡ q|dkrš|  d¡ q|dkr®|  d¡ q|dkrÂ|  d	¡ q|d
krÖ| d¡ q|dkrD|søtdƒ |  d¡ q|d }|d= yt| d| ƒ}	W n" tk
r:   |  	|¡ wY nX |	ƒ  q|dkrZt
d| ƒ‚|}x(||k r†|| tjkr†|d }q`W ||kr¾|d }|||… }|dkr²q|  |¡ q|||… }||k r2|| d
kr2|d }| |¡ yt| d| ƒ}	W n" tk
r(   |  |¡ wY nX |	ƒ  qyt| d| ƒ}	W n" tk
rf   |  |¡ wY nX |	ƒ  qW |r‚td|ƒ d S )Nr   r=   rb   ú<z&lt;r   z&gt;ú&z&amp;ú{r   ú}z*** Unmatched }rc   Úclose_ú@zunexpected funny %rr€   Úopen_Zhandle_z*** Stack not empty at para:)r'   ÚspprogÚsearchÚstartr   r   rh   ÚgetattrÚAttributeErrorÚunknown_closeÚRuntimeErrorÚstringÚascii_lettersÚunknown_openÚunknown_handle)
r   r   rf   ÚiÚnr™   rm   r‡   rp   Úmethodr   r   r   r„   ±  s’    









 






zTexinfoParser.expandc             C   sR   t d| d ƒ |d }|  d|¡ || jkr:d| j|< n| j| d | j|< d S )Nz*** No open func for @z{...}r’   r•   r=   )rh   r   r>   )r   rp   r   r   r   r      s    
zTexinfoParser.unknown_openc             C   sP   t d| d ƒ d| }|  d¡ || jkr8d| j|< n| j| d | j|< d S )Nz*** No close func for @z{...}r“   r=   )rh   r   r>   )r   rp   r   r   r   rœ     s    

zTexinfoParser.unknown_closec             C   sF   t d| ƒ |  d|¡ || jkr.d| j|< n| j| d | j|< d S )Nz*** No handler for @r•   r=   )rh   r   r>   )r   rp   r   r   r   r¡     s
    
zTexinfoParser.unknown_handlec             C   s   d S )Nr   )r   r   r   r   Úhandle_noindent#  ó    zTexinfoParser.handle_noindentc             C   s   d S )Nr   )r   r   r   r   Úhandle_refill%  r¦   zTexinfoParser.handle_refillc          
   C   sÔ   |}t j | j|¡}yt|dƒ}W n0 tk
rR } ztdt|ƒƒ d S d }~X Y nX td| j dt|ƒƒ | j	}| j
}| j}| jd | _|  |d¡ | jd | _| ¡  || _	|| _
|| _td| j dt|ƒƒ d S )NÚrz*** Can't open include filerz   z--> filer=   r   z<-- file)ÚosÚpathr(   rG   r   ÚIOErrorrh   Úreprr@   rd   re   rf   rT   r^   r   )r   rt   Úfiler   ÚmsgZ	save_doneZ	save_skipZ
save_stackr   r   r   Ú
do_include)  s&    zTexinfoParser.do_includec             C   s   d S )Nr   )r   r   r   r   Úopen_dmn@  r¦   zTexinfoParser.open_dmnc             C   s   d S )Nr   )r   r   r   r   Ú	close_dmnA  r¦   zTexinfoParser.close_dmnc             C   s   |   d¡ d S )Nz...)r   )r   r   r   r   Ú	open_dotsC  r¦   zTexinfoParser.open_dotsc             C   s   d S )Nr   )r   r   r   r   Ú
close_dotsD  r¦   zTexinfoParser.close_dotsc             C   s   d S )Nr   )r   r   r   r   Úopen_bulletF  r¦   zTexinfoParser.open_bulletc             C   s   d S )Nr   )r   r   r   r   Úclose_bulletG  r¦   zTexinfoParser.close_bulletc             C   s   |   d¡ d S )NZTeX)r   )r   r   r   r   Úopen_TeXI  r¦   zTexinfoParser.open_TeXc             C   s   d S )Nr   )r   r   r   r   Ú	close_TeXJ  r¦   zTexinfoParser.close_TeXc             C   s   |   | j¡ d S )N)r   ÚCOPYRIGHT_SYMBOL)r   r   r   r   Úhandle_copyrightL  r¦   zTexinfoParser.handle_copyrightc             C   s   |   | j¡ d S )N)r   r¸   )r   r   r   r   Úopen_copyrightM  r¦   zTexinfoParser.open_copyrightc             C   s   d S )Nr   )r   r   r   r   Úclose_copyrightN  r¦   zTexinfoParser.close_copyrightc             C   s   |   d¡ d S )Nú-)r   )r   r   r   r   Ú
open_minusP  r¦   zTexinfoParser.open_minusc             C   s   d S )Nr   )r   r   r   r   Úclose_minusQ  r¦   zTexinfoParser.close_minusc             C   s   |   d¡ d S )Nz&#161;)r   )r   r   r   r   Úopen_exclamdownw  r¦   zTexinfoParser.open_exclamdownc             C   s   d S )Nr   )r   r   r   r   Úclose_exclamdownx  r¦   zTexinfoParser.close_exclamdownc             C   s   |   d¡ d S )Nz&#191;)r   )r   r   r   r   Úopen_questiondowny  r¦   zTexinfoParser.open_questiondownc             C   s   d S )Nr   )r   r   r   r   Úclose_questiondownz  r¦   z TexinfoParser.close_questiondownc             C   s   |   d¡ d S )Nz&#229;)r   )r   r   r   r   Úopen_aa{  r¦   zTexinfoParser.open_aac             C   s   d S )Nr   )r   r   r   r   Úclose_aa|  r¦   zTexinfoParser.close_aac             C   s   |   d¡ d S )Nz&#197;)r   )r   r   r   r   Úopen_AA}  r¦   zTexinfoParser.open_AAc             C   s   d S )Nr   )r   r   r   r   Úclose_AA~  r¦   zTexinfoParser.close_AAc             C   s   |   d¡ d S )Nz&#230;)r   )r   r   r   r   Úopen_ae  r¦   zTexinfoParser.open_aec             C   s   d S )Nr   )r   r   r   r   Úclose_ae€  r¦   zTexinfoParser.close_aec             C   s   |   d¡ d S )Nz&#198;)r   )r   r   r   r   Úopen_AE  r¦   zTexinfoParser.open_AEc             C   s   d S )Nr   )r   r   r   r   Úclose_AE‚  r¦   zTexinfoParser.close_AEc             C   s   |   d¡ d S )Nz&#248;)r   )r   r   r   r   Úopen_oƒ  r¦   zTexinfoParser.open_oc             C   s   d S )Nr   )r   r   r   r   Úclose_o„  r¦   zTexinfoParser.close_oc             C   s   |   d¡ d S )Nz&#216;)r   )r   r   r   r   Úopen_O…  r¦   zTexinfoParser.open_Oc             C   s   d S )Nr   )r   r   r   r   Úclose_O†  r¦   zTexinfoParser.close_Oc             C   s   |   d¡ d S )Nz&#223;)r   )r   r   r   r   Úopen_ss‡  r¦   zTexinfoParser.open_ssc             C   s   d S )Nr   )r   r   r   r   Úclose_ssˆ  r¦   zTexinfoParser.close_ssc             C   s   |   d¡ d S )NZoe)r   )r   r   r   r   Úopen_oe‰  r¦   zTexinfoParser.open_oec             C   s   d S )Nr   )r   r   r   r   Úclose_oeŠ  r¦   zTexinfoParser.close_oec             C   s   |   d¡ d S )NZOE)r   )r   r   r   r   Úopen_OE‹  r¦   zTexinfoParser.open_OEc             C   s   d S )Nr   )r   r   r   r   Úclose_OEŒ  r¦   zTexinfoParser.close_OEc             C   s   |   d¡ d S )Nzl/)r   )r   r   r   r   Úopen_l  r¦   zTexinfoParser.open_lc             C   s   d S )Nr   )r   r   r   r   Úclose_lŽ  r¦   zTexinfoParser.close_lc             C   s   |   d¡ d S )NzL/)r   )r   r   r   r   Úopen_L  r¦   zTexinfoParser.open_Lc             C   s   d S )Nr   )r   r   r   r   Úclose_L  r¦   zTexinfoParser.close_Lc             C   s   |   d¡ d S )Nz=&gt;)r   )r   r   r   r   Úopen_result”  r¦   zTexinfoParser.open_resultc             C   s   d S )Nr   )r   r   r   r   Úclose_result•  r¦   zTexinfoParser.close_resultc             C   s   |   d¡ d S )Nz==&gt;)r   )r   r   r   r   Úopen_expansion—  r¦   zTexinfoParser.open_expansionc             C   s   d S )Nr   )r   r   r   r   Úclose_expansion˜  r¦   zTexinfoParser.close_expansionc             C   s   |   d¡ d S )Nz-|)r   )r   r   r   r   Ú
open_printš  r¦   zTexinfoParser.open_printc             C   s   d S )Nr   )r   r   r   r   Úclose_print›  r¦   zTexinfoParser.close_printc             C   s   |   d¡ d S )Nzerror--&gt;)r   )r   r   r   r   Ú
open_error  r¦   zTexinfoParser.open_errorc             C   s   d S )Nr   )r   r   r   r   Úclose_errorž  r¦   zTexinfoParser.close_errorc             C   s   |   d¡ d S )Nz==)r   )r   r   r   r   Ú
open_equiv   r¦   zTexinfoParser.open_equivc             C   s   d S )Nr   )r   r   r   r   Úclose_equiv¡  r¦   zTexinfoParser.close_equivc             C   s   |   d¡ d S )Nz-!-)r   )r   r   r   r   Ú
open_point£  r¦   zTexinfoParser.open_pointc             C   s   d S )Nr   )r   r   r   r   Úclose_point¤  r¦   zTexinfoParser.close_pointc             C   s   |   d¡ |  ¡  d S )Nzsee )r   rq   )r   r   r   r   Ú
open_pxref¨  s    
zTexinfoParser.open_pxrefc             C   s   |   ¡  d S )N)Úmakeref)r   r   r   r   Úclose_pxref«  s    zTexinfoParser.close_pxrefc             C   s   |   d¡ |  ¡  d S )NzSee )r   rq   )r   r   r   r   Ú	open_xref®  s    
zTexinfoParser.open_xrefc             C   s   |   ¡  d S )N)ræ   )r   r   r   r   Ú
close_xref±  s    zTexinfoParser.close_xrefc             C   s   |   ¡  d S )N)rq   )r   r   r   r   Úopen_ref´  s    zTexinfoParser.open_refc             C   s   |   ¡  d S )N)ræ   )r   r   r   r   Ú	close_ref¶  s    zTexinfoParser.close_refc             C   s   |   d¡ |  ¡  d S )NzSee info file )r   rq   )r   r   r   r   Úopen_inforef¹  s    
zTexinfoParser.open_inforefc             C   s^   |   ¡ }dd„ | d¡D ƒ}xt|ƒdk r6| d¡ qW |d }|d }|  d|d	|d
¡ d S )Nc             S   s   g | ]}|  ¡ ‘qS r   )rƒ   )Ú.0Úsr   r   r   ú
<listcomp>¾  s    z/TexinfoParser.close_inforef.<locals>.<listcomp>ú,r   r   r   r~   ú`z	', node `ú')rr   Úsplitr'   r   r   )r   r   rt   rR   r­   r   r   r   Úclose_inforef¼  s     zTexinfoParser.close_inforefc             C   s–   |   ¡ }dd„ | d¡D ƒ}xt|ƒdk r6| d¡ qW |d  }}|d rT|d }|d }|d	 }t|ƒ}|r€d
| d | }|  d|d|d¡ d S )Nc             S   s   g | ]}|  ¡ ‘qS r   )rƒ   )rí   rî   r   r   r   rï   Æ  s    z)TexinfoParser.makeref.<locals>.<listcomp>rð   é   r   r   r~   r   ru   z../r   z	<A HREF="z">z</A>)rr   ró   r'   r   r   r   )r   r   rt   r"   r!   r­   r   Úhrefr   r   r   ræ   Ä  s      zTexinfoParser.makerefc             C   s   |   ¡  d S )N)rq   )r   r   r   r   Ú	open_urefÒ  s    zTexinfoParser.open_urefc             C   sf   |   ¡ }dd„ | d¡D ƒ}xt|ƒdk r6| d¡ qW |d }|d }|sP|}|  d|d	|d
¡ d S )Nc             S   s   g | ]}|  ¡ ‘qS r   )rƒ   )rí   rî   r   r   r   rï   Ö  s    z,TexinfoParser.close_uref.<locals>.<listcomp>rð   r~   r   r   r=   z	<A HREF="z">z</A>)rr   ró   r'   r   r   )r   r   rt   rö   r!   r   r   r   Ú
close_urefÔ  s      zTexinfoParser.close_urefc             C   s   |   ¡  d S )N)rq   )r   r   r   r   Ú
open_imageä  s    zTexinfoParser.open_imagec             C   s   |   ¡  d S )N)Ú	makeimage)r   r   r   r   Úclose_imageæ  s    zTexinfoParser.close_imagec       	   	   C   s"  |   ¡ }dd„ | d¡D ƒ}xt|ƒdk r6| d¡ qW |d }|d }|d }|d	 }|d
 }| jd | }tj |d ¡rˆ|d7 }n@tj |d ¡r¢|d7 }n&tj |d ¡r¼|d7 }ntd| ƒ |  	d|d|râd| d päd|rôd| d pöd|r
d| d pdd¡ | j
 |¡ d S )Nc             S   s   g | ]}|  ¡ ‘qS r   )rƒ   )rí   rî   r   r   r   rï   ê  s    z+TexinfoParser.makeimage.<locals>.<listcomp>rð   rõ   r   r   r=   r~   r   ru   r   z.pngz.jpgz.gifz*** Cannot find image z
<IMG SRC="r   z WIDTH="z	 HEIGHT="z ALT="z/>)rr   ró   r'   r   r   r©   rª   Úexistsrh   r   rF   Úaddimage)	r   r   rt   ÚfilenameÚwidthÚheightZaltÚextZimagelocationr   r   r   rú   è  s.     



zTexinfoParser.makeimagec             C   s   d S )Nr   )r   r   r   r   r–     r¦   zTexinfoParser.open_c             C   s   d S )Nr   )r   r   r   r   r”     r¦   zTexinfoParser.close_c             C   s   |   d¡ d S )Nz<CITE>)r   )r   r   r   r   Ú	open_cite  r¦   zTexinfoParser.open_citec             C   s   |   d¡ d S )Nz</CITE>)r   )r   r   r   r   Ú
close_cite  r¦   zTexinfoParser.close_citec             C   s   |   d¡ d S )Nz<CODE>)r   )r   r   r   r   Ú	open_code  r¦   zTexinfoParser.open_codec             C   s   |   d¡ d S )Nz</CODE>)r   )r   r   r   r   Ú
close_code  r¦   zTexinfoParser.close_codec             C   s   |   d¡ d S )Nz<TT>)r   )r   r   r   r   Úopen_t  r¦   zTexinfoParser.open_tc             C   s   |   d¡ d S )Nz</TT>)r   )r   r   r   r   Úclose_t  r¦   zTexinfoParser.close_tc             C   s   |   d¡ d S )Nz<DFN>)r   )r   r   r   r   Úopen_dfn  r¦   zTexinfoParser.open_dfnc             C   s   |   d¡ d S )Nz</DFN>)r   )r   r   r   r   Ú	close_dfn  r¦   zTexinfoParser.close_dfnc             C   s   |   d¡ d S )Nz<EM>)r   )r   r   r   r   Ú	open_emph   r¦   zTexinfoParser.open_emphc             C   s   |   d¡ d S )Nz</EM>)r   )r   r   r   r   Ú
close_emph!  r¦   zTexinfoParser.close_emphc             C   s   |   d¡ d S )Nz<I>)r   )r   r   r   r   Úopen_i#  r¦   zTexinfoParser.open_ic             C   s   |   d¡ d S )Nz</I>)r   )r   r   r   r   Úclose_i$  r¦   zTexinfoParser.close_ic             C   s2   t | jƒd }|  | jdt|ƒi ¡ |  ¡  d S )Nr=   Úid)r'   rN   r   ÚFN_SOURCE_PATTERNr¬   rq   )r   r  r   r   r   Úopen_footnote&  s    zTexinfoParser.open_footnotec             C   s&   t | jƒd }| j ||  ¡ f¡ d S )Nr=   )r'   rN   r   rr   )r   r  r   r   r   Úclose_footnote-  s    zTexinfoParser.close_footnotec             C   sD   |   | j¡ x,| jD ]"\}}|   | jt|ƒ|dœ ¡ qW g | _d S )N)r  r   )r   Ú	FN_HEADERrN   ÚFN_TARGET_PATTERNr¬   )r   r  r   r   r   r   rv   1  s
    zTexinfoParser.writefootnotesc             C   s   |   d¡ d S )Nz<CODE>)r   )r   r   r   r   Ú	open_file8  r¦   zTexinfoParser.open_filec             C   s   |   d¡ d S )Nz</CODE>)r   )r   r   r   r   Ú
close_file9  r¦   zTexinfoParser.close_filec             C   s   |   d¡ d S )Nz<KBD>)r   )r   r   r   r   Úopen_kbd;  r¦   zTexinfoParser.open_kbdc             C   s   |   d¡ d S )Nz</KBD>)r   )r   r   r   r   Ú	close_kbd<  r¦   zTexinfoParser.close_kbdc             C   s   |   d¡ d S )Nz<KEY>)r   )r   r   r   r   Úopen_key>  r¦   zTexinfoParser.open_keyc             C   s   |   d¡ d S )Nz</KEY>)r   )r   r   r   r   Ú	close_key?  r¦   zTexinfoParser.close_keyc             C   s   |   d¡ d S )Nz<R>)r   )r   r   r   r   Úopen_rA  r¦   zTexinfoParser.open_rc             C   s   |   d¡ d S )Nz</R>)r   )r   r   r   r   Úclose_rB  r¦   zTexinfoParser.close_rc             C   s   |   d¡ d S )Nz`<SAMP>)r   )r   r   r   r   Ú	open_sampD  r¦   zTexinfoParser.open_sampc             C   s   |   d¡ d S )Nz</SAMP>')r   )r   r   r   r   Ú
close_sampE  r¦   zTexinfoParser.close_sampc             C   s   |   d¡ d S )Nz<SMALLCAPS>)r   )r   r   r   r   Úopen_scG  r¦   zTexinfoParser.open_scc             C   s   |   d¡ d S )Nz</SMALLCAPS>)r   )r   r   r   r   Úclose_scH  r¦   zTexinfoParser.close_scc             C   s   |   d¡ d S )Nz<STRONG>)r   )r   r   r   r   Úopen_strongJ  r¦   zTexinfoParser.open_strongc             C   s   |   d¡ d S )Nz	</STRONG>)r   )r   r   r   r   Úclose_strongK  r¦   zTexinfoParser.close_strongc             C   s   |   d¡ d S )Nz<B>)r   )r   r   r   r   Úopen_bM  r¦   zTexinfoParser.open_bc             C   s   |   d¡ d S )Nz</B>)r   )r   r   r   r   Úclose_bN  r¦   zTexinfoParser.close_bc             C   s   |   d¡ d S )Nz<VAR>)r   )r   r   r   r   Úopen_varP  r¦   zTexinfoParser.open_varc             C   s   |   d¡ d S )Nz</VAR>)r   )r   r   r   r   Ú	close_varQ  r¦   zTexinfoParser.close_varc             C   s   |   d¡ d S )Nz	<NOBREAK>)r   )r   r   r   r   Úopen_wS  r¦   zTexinfoParser.open_wc             C   s   |   d¡ d S )Nz
</NOBREAK>)r   )r   r   r   r   Úclose_wT  r¦   zTexinfoParser.close_wc             C   s   |   ¡  d S )N)rq   )r   r   r   r   Úopen_urlV  r¦   zTexinfoParser.open_urlc             C   s   |   ¡ }|  d|d|d¡ d S )Nz	<A HREF="z">z</A>)rr   r   )r   r   r   r   r   Ú	close_urlW  s    zTexinfoParser.close_urlc             C   s   |   ¡  d S )N)rq   )r   r   r   r   Ú
open_email[  r¦   zTexinfoParser.open_emailc             C   s   |   ¡ }|  d|d|d¡ d S )Nz<A HREF="mailto:z">z</A>)rr   r   )r   r   r   r   r   Úclose_email\  s    zTexinfoParser.close_emailc             C   s   d S )Nr   )r   r   r   r   Ú
open_smallc  r¦   zTexinfoParser.open_smallc             C   s   d S )Nr   )r   r   r   r   Úclose_smalld  r¦   zTexinfoParser.close_smallc             C   sä   |  d¡\}}|||… }||d …  ¡ }| jdkrTtd| j d| j| jd| |ƒ yt| d| ƒ}W nb tk
rÈ   yt| d| ƒ}W n& tk
r®   | jsª|  ||¡ d S X | j 	|¡ ||ƒ d S X | jrØ|dkrà||ƒ d S )Nr=   rz   zcommand:r•   Údo_Zbgn_r|   )
rj   rƒ   r@   rh   re   rf   rš   r›   Úunknown_cmdr   )r   r   rm   rn   ro   rp   rt   Úfuncr   r   r   rk   f  s(    
zTexinfoParser.commandc             C   s>   t dd| |ƒ || jkr&d| j|< n| j| d | j|< d S )Nz*** unknownr•   r=   )rh   r>   )r   rp   rt   r   r   r   r/  }  s    
zTexinfoParser.unknown_cmdc             C   s„   |  ¡ }|stdƒ nj|d }| jr2| jd |kr@td|dƒ n| jd= yt| d| ƒ}W n tk
rx   |  |¡ d S X |ƒ  d S )Nz*** @end w/o argsr   rc   z*** @endÚ
unexpectedZend_)ró   rh   rf   rš   r›   Úunknown_end)r   rt   Úwordsrp   r0  r   r   r   Údo_end„  s    

zTexinfoParser.do_endc             C   sD   d| }t dd| ƒ || jkr,d| j|< n| j| d | j|< d S )Nzend z*** unknownr•   r=   )rh   r>   )r   rp   r   r   r   r2  •  s
    
zTexinfoParser.unknown_endc             C   s   d S )Nr   )r   rt   r   r   r   Ú
do_commentŸ  r¦   zTexinfoParser.do_commentc             C   s   d S )Nr   )r   rt   r   r   r   Ú
bgn_ifinfo¤  r¦   zTexinfoParser.bgn_ifinfoc             C   s   d S )Nr   )r   r   r   r   Ú
end_ifinfo¥  r¦   zTexinfoParser.end_ifinfoc             C   s   | j d | _ d S )Nr=   )re   )r   rt   r   r   r   Ú	bgn_iftex§  r¦   zTexinfoParser.bgn_iftexc             C   s   | j d | _ d S )Nr=   )re   )r   r   r   r   Ú	end_iftex¨  r¦   zTexinfoParser.end_iftexc             C   s   | j d | _ d S )Nr=   )re   )r   rt   r   r   r   Ú
bgn_ignoreª  r¦   zTexinfoParser.bgn_ignorec             C   s   | j d | _ d S )Nr=   )re   )r   r   r   r   Ú
end_ignore«  r¦   zTexinfoParser.end_ignorec             C   s   | j d | _ d S )Nr=   )re   )r   rt   r   r   r   Úbgn_tex­  r¦   zTexinfoParser.bgn_texc             C   s   | j d | _ d S )Nr=   )re   )r   r   r   r   Úend_tex®  r¦   zTexinfoParser.end_texc             C   sD   |  d¡}|d }t|ƒdkr$d}nd |dd … ¡}|| j|< d S )Nr{   r   r=   )ró   r'   r(   rL   )r   rt   ÚfieldsÚkeyÚvaluer   r   r   Údo_set°  s    
zTexinfoParser.do_setc             C   s   d | j |< d S )N)rL   )r   rt   r   r   r   Údo_clear¹  s    zTexinfoParser.do_clearc             C   sJ   || j ks| j | d kr6| jd | _d| jt| jƒ< nd| jt| jƒ< d S )Nr=   r   )rL   re   rM   r'   rf   )r   rt   r   r   r   Ú	bgn_ifset¼  s    zTexinfoParser.bgn_ifsetc             C   sd   y6| j t| jƒd  r"| jd | _| j t| jƒd = W n( tk
r^   tdt| jƒd ƒ Y nX d S )Nr=   z*** end_ifset: KeyError :)rM   r'   rf   re   r   rh   )r   r   r   r   Ú	end_ifsetÂ  s    zTexinfoParser.end_ifsetc             C   sJ   || j kr6| j | d k	r6| jd | _d| jt| jƒ< nd| jt| jƒ< d S )Nr=   r   )rL   re   rM   r'   rf   )r   rt   r   r   r   Úbgn_ifclearÊ  s    zTexinfoParser.bgn_ifclearc             C   sd   y6| j t| jƒd  r"| jd | _| j t| jƒd = W n( tk
r^   tdt| jƒd ƒ Y nX d S )Nr=   z*** end_ifclear: KeyError :)rM   r'   rf   re   r   rh   )r   r   r   r   Úend_ifclearÐ  s    zTexinfoParser.end_ifclearc             C   s   |   ¡  d S )N)rq   )r   r   r   r   Ú
open_valueØ  s    zTexinfoParser.open_valuec             C   s2   |   ¡ }|| jkr$|  | j| ¡ n
td|ƒ d S )Nz*** Undefined value: )rr   rL   r   rh   )r   r?  r   r   r   Úclose_valueÛ  s    
zTexinfoParser.close_valuec             C   s    |   ¡  |  |¡ |  ¡ | _d S )N)rq   r„   rr   r   )r   rt   r   r   r   Údo_settitleè  s    
zTexinfoParser.do_settitlec             C   s   d S )Nr   )r   rt   r   r   r   Ú
do_parskipì  r¦   zTexinfoParser.do_parskipc             C   s   |   ¡  d| _d S )Nr=   )ry   rd   )r   rt   r   r   r   Údo_byeð  s    zTexinfoParser.do_byec             C   s   | j d | _ d S )Nr=   )re   )r   rt   r   r   r   Úbgn_titlepageö  r¦   zTexinfoParser.bgn_titlepagec             C   s   | j d | _ d S )Nr=   )re   )r   r   r   r   Úend_titlepage÷  r¦   zTexinfoParser.end_titlepagec             C   s   d S )Nr   )r   rt   r   r   r   Údo_shorttitlepageø  r¦   zTexinfoParser.do_shorttitlepagec             C   s"   |   d¡ |  |¡ |   d¡ d S )Nz<H1>z</H1>
)r   r„   )r   rt   r   r   r   Ú	do_centerú  s    

zTexinfoParser.do_centerc       	   	   C   s  |   ¡  d| _dd„ | d¡D ƒ}xt|ƒdk r<| d¡ q$W || _|d d… \}}}}| jd t|ƒ }|| jkr€t	d|ƒ n| j
r˜t	d	| j
 d
|ƒ d| j|< || _| jrÂ| jrÂ| j| jd _| jsÎ|| _|}| jræ|d | j }|  | j| j| j||||¡| _| j | j||||¡ d S )Nr   c             S   s   g | ]}|  ¡ ‘qS r   )rƒ   )rí   rî   r   r   r   rï     s    z)TexinfoParser.do_node.<locals>.<listcomp>rð   ru   r   r   z*** Filename already in use: rz   z--- writingr=   rc   z -- )ry   rC   ró   r'   r   rw   r   r   r?   rh   r@   r"   r2   rS   r   r   ÚNoderR   rF   Úaddnode)	r   rt   Úpartsr   r   r	   r
   r­   r   r   r   r   Údo_node  s0     
 
  zTexinfoParser.do_nodec          
   C   s:   |r6|  ¡ dkrd}nt|ƒ}|  |d|d|d|d¡ d S )Nz(dir)z../dir.htmlz: <A HREF="z" TYPE="z">z</A>  
)r    r   r   )r   r!   r"   r$   r   r   r   r%   -  s    zTexinfoParser.linkc             C   sà   | j rÜ|| j _xÌ| jrÚ| jd j|krL| jd  ¡  | jd  ¡  | jd= q| jd j|kr¶| jd jsx| j j| jd _| j js| jd j| j _| jd  ¡  | jd  ¡  | jd= q|dkrÖ| j jsÖ| jd j| j _P qW d S )Nrc   r=   )	rR   r7   rS   r/   r   r   r   r	   r
   )r   r7   r   r   r   Úpopstack8  s$    

zTexinfoParser.popstackc             C   s   |   d|d¡ |  d¡ d S )NÚH1r   r=   )ÚheadingrT  )r   rt   r   r   r   Ú
do_chapterM  s    zTexinfoParser.do_chapterc             C   s   |   d|d¡ |  d¡ d S )NrU  rc   r=   )rV  rT  )r   rt   r   r   r   Údo_unnumberedQ  s    zTexinfoParser.do_unnumberedc             C   s   |   d|d¡ |  d¡ d S )NrU  rc   r=   )rV  rT  )r   rt   r   r   r   Údo_appendixT  s    zTexinfoParser.do_appendixc             C   s   |   d|d¡ d S )NrU  rc   )rV  )r   rt   r   r   r   Údo_topW  s    zTexinfoParser.do_topc             C   s   |   d|d¡ d S )NrU  rc   )rV  )r   rt   r   r   r   Údo_chapheadingY  s    zTexinfoParser.do_chapheadingc             C   s   |   d|d¡ d S )NrU  rc   )rV  )r   rt   r   r   r   Údo_majorheading[  s    zTexinfoParser.do_majorheadingc             C   s   |   d|d¡ |  d¡ d S )NrU  r=   r~   )rV  rT  )r   rt   r   r   r   Ú
do_section^  s    zTexinfoParser.do_sectionc             C   s   |   d|d¡ |  d¡ d S )NrU  rc   r~   )rV  rT  )r   rt   r   r   r   Údo_unnumberedsecb  s    zTexinfoParser.do_unnumberedsecc             C   s   |   d|d¡ |  d¡ d S )NrU  rc   r~   )rV  rT  )r   rt   r   r   r   Údo_appendixsece  s    zTexinfoParser.do_appendixsecc             C   s   |   d|d¡ d S )NrU  rc   )rV  )r   rt   r   r   r   Ú
do_headingi  s    zTexinfoParser.do_headingc             C   s   |   d|d¡ |  d¡ d S )NÚH2r~   r   )rV  rT  )r   rt   r   r   r   Údo_subsectionl  s    zTexinfoParser.do_subsectionc             C   s   |   d|d¡ |  d¡ d S )Nra  rc   r   )rV  rT  )r   rt   r   r   r   Údo_unnumberedsubseco  s    z!TexinfoParser.do_unnumberedsubsecc             C   s   |   d|d¡ |  d¡ d S )Nra  rc   r   )rV  rT  )r   rt   r   r   r   Údo_appendixsubsecr  s    zTexinfoParser.do_appendixsubsecc             C   s   |   d|d¡ d S )Nra  rc   )rV  )r   rt   r   r   r   Údo_subheadingu  s    zTexinfoParser.do_subheadingc             C   s   |   d|d¡ |  d¡ d S )NÚH3r   ru   )rV  rT  )r   rt   r   r   r   Údo_subsubsectionx  s    zTexinfoParser.do_subsubsectionc             C   s   |   d|d¡ |  d¡ d S )Nrf  rc   ru   )rV  rT  )r   rt   r   r   r   Údo_unnumberedsubsubsec{  s    z$TexinfoParser.do_unnumberedsubsubsecc             C   s   |   d|d¡ |  d¡ d S )Nrf  rc   ru   )rV  rT  )r   rt   r   r   r   Údo_appendixsubsubsec~  s    z"TexinfoParser.do_appendixsubsubsecc             C   s   |   d|d¡ d S )Nrf  rc   )rV  )r   rt   r   r   r   Údo_subsubheading  s    zTexinfoParser.do_subsubheadingc             C   sÐ   |dkrxt | jƒ|kr&| j d¡ q
W | j|d d …= | j| d | j|< d}x| jD ]}|t|ƒ d }qXW |d | }| j ||| jf¡ |  d|d¡ |  |¡ |  d|d	¡ | jsÂ| j	rÌt
d
|ƒ d S )Nr   r=   r   r;   r{   r   r   z</z>
z---)r'   rJ   r   r¬   rI   r"   r   r„   r@   rA   rh   )r   r7   rt   ÚlevelÚxr¢   r   r   r   rV  „  s    
zTexinfoParser.headingc             C   s   |   dd¡ d S )NzTable of Contentsiç  )Úlistcontents)r   rt   r   r   r   Údo_contents•  s    zTexinfoParser.do_contentsc             C   s   d S )Nr   )r   rt   r   r   r   Údo_shortcontents™  s    zTexinfoParser.do_shortcontentsc             C   sÚ   |   d|d¡ dg}x®| jD ]¤\}}}||kr0q||d kr\|   d|d  d¡ | |¡ n8||d k r”x*||d k r’|d= |   d|d  d¡ qjW |   d| dt|ƒd	¡ |  |¡ |   d
¡ qW |   dt|ƒ ¡ d S )Nz<H1>z</H1>
<UL COMPACT PLAIN>
r   rc   z  z<UL PLAIN>
z</UL>
z<LI> <A HREF="z">z</A>
)r   rI   r   r   r„   r'   )r   r   ÚmaxlevelZ
prevlevelsrk  rR   r   r   r   rm  ž  s$    

zTexinfoParser.listcontentsc             C   s   d S )Nr   )r   rt   r   r   r   Údo_page¸  r¦   zTexinfoParser.do_pagec             C   s   d S )Nr   )r   rt   r   r   r   Údo_needº  r¦   zTexinfoParser.do_needc             C   s   d S )Nr   )r   rt   r   r   r   Ú	bgn_group¼  r¦   zTexinfoParser.bgn_groupc             C   s   d S )Nr   )r   r   r   r   Ú	end_group½  r¦   zTexinfoParser.end_groupc             C   s    | j r|  d¡ n
|  d¡ d S )Nrb   z<P>
)rK   r   )r   rt   r   r   r   Údo_spÁ  s    zTexinfoParser.do_spc             C   s   |   d¡ d S )Nz<HR>)r   )r   rt   r   r   r   Údo_hlineÇ  s    zTexinfoParser.do_hlinec             C   s   |   d¡ |  |¡ d S )Nz<DL>)r   Ú	do_deffnx)r   rt   r   r   r   Ú	bgn_deffnÌ  s    
zTexinfoParser.bgn_deffnc             C   s   |   d¡ d S )Nz</DL>
)r   )r   r   r   r   Ú	end_deffnÐ  s    zTexinfoParser.end_deffnc             C   sz   |   d¡ t|dƒ}|d d… |dd …  \}}}|  d| ¡ x|D ]}|  dt|ƒ ¡ qFW |   d¡ |  d|¡ d S )Nz<DT>r~   z@b{%s}r{   z
<DD>Úfn)r   Ú
splitwordsr„   ÚmakevarÚindex)r   rt   r3  Úcategoryr   ÚrestÚwordr   r   r   rw  Ó  s    


 
zTexinfoParser.do_deffnxc             C   s   |   d| ¡ d S )Nz	Function )rx  )r   rt   r   r   r   Ú	bgn_defunÝ  r¦   zTexinfoParser.bgn_defunc             C   s   |   d| ¡ d S )Nz	Function )rw  )r   rt   r   r   r   Ú	do_defunxß  r¦   zTexinfoParser.do_defunxc             C   s   |   d| ¡ d S )NzMacro )rx  )r   rt   r   r   r   Ú
bgn_defmacá  r¦   zTexinfoParser.bgn_defmacc             C   s   |   d| ¡ d S )NzMacro )rw  )r   rt   r   r   r   Ú
do_defmacxã  r¦   zTexinfoParser.do_defmacxc             C   s   |   d| ¡ d S )Nz{Special Form} )rx  )r   rt   r   r   r   Úbgn_defspecå  r¦   zTexinfoParser.bgn_defspecc             C   s   |   d| ¡ d S )Nz{Special Form} )rw  )r   rt   r   r   r   Údo_defspecxç  r¦   zTexinfoParser.do_defspecxc             C   s   |   d¡ |  |¡ d S )Nz<DL>)r   Ú	do_defvrx)r   rt   r   r   r   Ú	bgn_defvré  s    
zTexinfoParser.bgn_defvrc             C   sv   |   d¡ t|dƒ}|d d… |dd …  \}}}|  d| ¡ x|D ]}|  d| ¡ qFW |   d¡ |  d|¡ d S )Nz<DT>r~   z	@code{%s}r{   z
<DD>Úvr)r   r{  r„   r}  )r   rt   r3  r~  r   r  r€  r   r   r   r‡  ï  s    


 
zTexinfoParser.do_defvrxc             C   s   |   d| ¡ d S )Nz	Variable )rˆ  )r   rt   r   r   r   Ú
bgn_defvarú  r¦   zTexinfoParser.bgn_defvarc             C   s   |   d| ¡ d S )Nz	Variable )r‡  )r   rt   r   r   r   Ú
do_defvarxü  r¦   zTexinfoParser.do_defvarxc             C   s   |   d| ¡ d S )Nz{User Option} )rˆ  )r   rt   r   r   r   Ú
bgn_defoptþ  r¦   zTexinfoParser.bgn_defoptc             C   s   |   d| ¡ d S )Nz{User Option} )r‡  )r   rt   r   r   r   Ú
do_defoptx   r¦   zTexinfoParser.do_defoptxc             C   s   |   d¡ |  |¡ d S )Nz<DL>)r   Údo_deftypefnx)r   rt   r   r   r   Úbgn_deftypefn  s    
zTexinfoParser.bgn_deftypefnc             C   s€   |   d¡ t|dƒ}|d d… |dd …  \}}}}|  d||f ¡ x|D ]}|  dt|ƒ ¡ qLW |   d¡ |  d|¡ d S )Nz<DT>r   z@code{%s} @b{%s}r{   z
<DD>rz  )r   r{  r„   r|  r}  )r   rt   r3  r~  Údatatyper   r  r€  r   r   r   rŽ  
  s    

 
 
zTexinfoParser.do_deftypefnxc             C   s   |   d| ¡ d S )Nz	Function )r  )r   rt   r   r   r   Úbgn_deftypefun  r¦   zTexinfoParser.bgn_deftypefunc             C   s   |   d| ¡ d S )Nz	Function )rŽ  )r   rt   r   r   r   Údo_deftypefunx  r¦   zTexinfoParser.do_deftypefunxc             C   s   |   d¡ |  |¡ d S )Nz<DL>)r   Údo_deftypevrx)r   rt   r   r   r   Úbgn_deftypevr  s    
zTexinfoParser.bgn_deftypevrc             C   s|   |   d¡ t|dƒ}|d d… |dd …  \}}}}|  d||f ¡ x|D ]}|  d| ¡ qLW |   d¡ |  d|¡ d S )Nz<DT>r   z@code{%s} @b{%s}r{   z
<DD>rz  )r   r{  r„   r}  )r   rt   r3  r~  r  r   r  r€  r   r   r   r“    s    

 
 
zTexinfoParser.do_deftypevrxc             C   s   |   d| ¡ d S )Nz	Variable )r”  )r   rt   r   r   r   Úbgn_deftypevar*  s    zTexinfoParser.bgn_deftypevarc             C   s   |   d| ¡ d S )Nz	Variable )r“  )r   rt   r   r   r   Údo_deftypevarx-  s    zTexinfoParser.do_deftypevarxc             C   s   |   d¡ |  |¡ d S )Nz<DL>)r   Ú	do_defcvx)r   rt   r   r   r   Ú	bgn_defcv2  s    
zTexinfoParser.bgn_defcvc             C   s€   |   d¡ t|dƒ}|d d… |dd …  \}}}}|  d| ¡ x|D ]}|  d| ¡ qHW |   d¡ |  dd||f ¡ d S )Nz<DT>r   z@b{%s}r{   z
<DD>r‰  z%s @r{on %s})r   r{  r„   r}  )r   rt   r3  r~  Ú	classnamer   r  r€  r   r   r   r—  8  s    

 
 
zTexinfoParser.do_defcvxc             C   s   |   d| ¡ d S )Nz{Instance Variable} )r˜  )r   rt   r   r   r   Úbgn_defivarC  s    zTexinfoParser.bgn_defivarc             C   s   |   d| ¡ d S )Nz{Instance Variable} )r—  )r   rt   r   r   r   Údo_defivarxF  s    zTexinfoParser.do_defivarxc             C   s   |   d¡ |  |¡ d S )Nz<DL>)r   Ú	do_defopx)r   rt   r   r   r   Ú	bgn_defopI  s    
zTexinfoParser.bgn_defopc             C   s„   |   d¡ t|dƒ}|d d… |dd …  \}}}}|  d| ¡ x|D ]}|  dt|ƒ ¡ qHW |   d¡ |  dd||f ¡ d S )Nz<DT>r   z@b{%s}r{   z
<DD>rz  z%s @r{on %s})r   r{  r„   r|  r}  )r   rt   r3  r~  r™  r   r  r€  r   r   r   rœ  O  s    

 
 
zTexinfoParser.do_defopxc             C   s   |   d| ¡ d S )NzMethod )r  )r   rt   r   r   r   Úbgn_defmethodY  s    zTexinfoParser.bgn_defmethodc             C   s   |   d| ¡ d S )NzMethod )rœ  )r   rt   r   r   r   Údo_defmethodx\  s    zTexinfoParser.do_defmethodxc             C   s   |   d¡ |  |¡ d S )Nz<DL>)r   Ú	do_deftpx)r   rt   r   r   r   Ú	bgn_deftpa  s    
zTexinfoParser.bgn_deftpc             C   sv   |   d¡ t|dƒ}|d d… |dd …  \}}}|  d| ¡ x|D ]}|  d| ¡ qFW |   d¡ |  d|¡ d S )Nz<DT>r~   z@b{%s}r{   z
<DD>Útp)r   r{  r„   r}  )r   rt   r3  r~  r   r  r€  r   r   r   r   g  s    


 
zTexinfoParser.do_deftpxc             C   sD   |s |   d¡ d| jt| jƒ< n || _|   d¡ d| jt| jƒ< d S )Nz<OL>
z</OL>
z<UL>
z</UL>
)r   rM   r'   rf   rP   )r   rt   r   r   r   Úbgn_enumerates  s    

zTexinfoParser.bgn_enumeratec             C   s6   d | _ |  | jt| jƒd  ¡ | jt| jƒd = d S )Nr=   )rP   r   rM   r'   rf   )r   r   r   r   Úend_enumerate{  s    zTexinfoParser.end_enumeratec             C   s   || _ |  d¡ d S )Nz<UL>
)rO   r   )r   rt   r   r   r   Úbgn_itemize€  s    zTexinfoParser.bgn_itemizec             C   s   d | _ |  d¡ d S )Nz</UL>
)rO   r   )r   r   r   r   Úend_itemizeƒ  s    zTexinfoParser.end_itemizec             C   s   || _ |  d¡ d S )Nz<DL>
)rO   r   )r   rt   r   r   r   Ú	bgn_table‡  s    zTexinfoParser.bgn_tablec             C   s   d | _ |  d¡ d S )Nz</DL>
)rO   r   )r   r   r   r   Ú	end_tableŠ  s    zTexinfoParser.end_tablec             C   s   d| _ |  |¡ d S )Nrz  )rQ   r§  )r   rt   r   r   r   Ú
bgn_ftableŽ  s    zTexinfoParser.bgn_ftablec             C   s   d | _ |  ¡  d S )N)rQ   r¨  )r   r   r   r   Ú
end_ftable‘  s    zTexinfoParser.end_ftablec             C   s   d| _ |  |¡ d S )Nr‰  )rQ   r§  )r   rt   r   r   r   Ú
bgn_vtable•  s    zTexinfoParser.bgn_vtablec             C   s   d | _ |  ¡  d S )N)rQ   r¨  )r   r   r   r   Ú
end_vtable˜  s    zTexinfoParser.end_vtablec             C   s  | j r|  | j |¡ | jrd| jd dkrV| jd rV| jd tjkrV| jd | d }n| jd | }| jd k	rˆ| jd | }t| jƒ| _| jr¼| jd d	kr¼|  d
¡ |  	|¡ |  d¡ nR| jrð| jd dkrð|  d¡ |  	|¡ |  d¡ n|  d¡ |  	|¡ |  d¡ d S )Nr   r•   r=   r’   r“   r{   z. rc   Útablez<DT>z
<DD>Z
multitablez<TR><TD>z</TD>
</TR>
z<LI>z  )
rQ   r}  rO   rž   rŸ   rP   Ú	incrementrf   r   r„   )r   rt   r   r   r   Údo_itemœ  s*     






zTexinfoParser.do_itemc             C   s   d | _ |  d¡ d S )Nz<TABLE BORDER="">
)rO   r   )r   rt   r   r   r   Úbgn_multitable·  s    zTexinfoParser.bgn_multitablec             C   s   d | _ |  d¡ d S )Nz</TABLE>
<BR>
)rO   r   )r   r   r   r   Úend_multitableº  s    zTexinfoParser.end_multitablec             C   s
   d | _ d S )N)rO   )r   r   r   r   Úhandle_columnfractions½  s    z$TexinfoParser.handle_columnfractionsc             C   s   |   d¡ d S )Nz</TD>
    <TD>)r   )r   r   r   r   Ú
handle_tabÀ  s    zTexinfoParser.handle_tabc             C   s   |   d¡ d S )Nz<BLOCKQUOTE>)r   )r   rt   r   r   r   Úbgn_quotationÆ  r¦   zTexinfoParser.bgn_quotationc             C   s   |   d¡ d S )Nz</BLOCKQUOTE>
)r   )r   r   r   r   Úend_quotationÇ  r¦   zTexinfoParser.end_quotationc             C   s   | j d | _ |  d¡ d S )Nr=   z<PRE>)rK   r   )r   rt   r   r   r   Úbgn_exampleÉ  s    zTexinfoParser.bgn_examplec             C   s   |   d¡ | jd | _d S )Nz</PRE>
r=   )r   rK   )r   r   r   r   Úend_exampleÌ  s    
zTexinfoParser.end_examplec             C   s   |   |d ¡ d S )Nrb   )r„   )r   rt   r   r   r   Ú	do_exdentß  r¦   zTexinfoParser.do_exdentc             C   s   | j d | _ |  d¡ d S )Nr=   z<PRE>
)rK   r   )r   rt   r   r   r   Úbgn_flushleftâ  s    zTexinfoParser.bgn_flushleftc             C   s   |   d¡ | jd | _d S )Nz</PRE>
r=   )r   rK   )r   r   r   r   Úend_flushleftå  s    
zTexinfoParser.end_flushleftc             C   s   | j d | _ |  d¡ d S )Nr=   z<ADDRESS COMPACT>
)rK   r   )r   rt   r   r   r   Úbgn_flushrighté  s    zTexinfoParser.bgn_flushrightc             C   s   |   d¡ | jd | _d S )Nz</ADDRESS>
r=   )r   rK   )r   r   r   r   Úend_flushrightì  s    
zTexinfoParser.end_flushrightc             C   s"   |   d¡ |   d¡ | j ¡  d S )Nz<DIR>
z$  <STRONG><EM>Menu</EM></STRONG><P>
)r   rF   Ú	beginmenu)r   rt   r   r   r   Úbgn_menuð  s    

zTexinfoParser.bgn_menuc             C   s   |   d¡ | j ¡  d S )Nz</DIR>
)r   rF   Úendmenu)r   r   r   r   Úend_menuô  s    
zTexinfoParser.end_menuc             C   s   d S )Nr   )r   rt   r   r   r   Úbgn_cartoucheø  r¦   zTexinfoParser.bgn_cartouchec             C   s   d S )Nr   )r   r   r   r   Úend_cartoucheù  r¦   zTexinfoParser.end_cartouchec             C   sn   dg| _ i | _d| jd< d| jd< d| jd< d| jd< d	| jd
< d| jd< i | _x| jD ]}g | j|< qXW d S )NÚcpZConceptZFunctionrz  ZKeywordÚkyÚProgramÚpgZTyper¢  ZVariabler‰  )ÚnoncodeindicesÚ
indextitleÚ
whichindex)r   r   r   r   r   rH   ý  s    





zTexinfoParser.resetindexc             C   s*   || j kr|  ||¡ ntdt|ƒƒ d S )Nz*** No index named)rÉ  r}  rh   r¬   )r   r   rt   r   r   r   Ú
user_index  s    
zTexinfoParser.user_indexc             C   s   |   d|¡ d S )NrÃ  )r}  )r   rt   r   r   r   Ú	do_cindex  r¦   zTexinfoParser.do_cindexc             C   s   |   d|¡ d S )Nrz  )r}  )r   rt   r   r   r   Ú	do_findex  r¦   zTexinfoParser.do_findexc             C   s   |   d|¡ d S )NrÄ  )r}  )r   rt   r   r   r   Ú	do_kindex  r¦   zTexinfoParser.do_kindexc             C   s   |   d|¡ d S )NrÆ  )r}  )r   rt   r   r   r   Ú	do_pindex  r¦   zTexinfoParser.do_pindexc             C   s   |   d|¡ d S )Nr¢  )r}  )r   rt   r   r   r   Ú	do_tindex  r¦   zTexinfoParser.do_tindexc             C   s   |   d|¡ d S )Nr‰  )r}  )r   rt   r   r   r   Ú	do_vindex  r¦   zTexinfoParser.do_vindexc             C   s*   | j |  || jf¡ | j || j¡ d S )N)rÉ  r   r"   rF   r}  )r   r   rt   r   r   r   r}    s    zTexinfoParser.indexc             C   s–   |  ¡ }t|ƒdkr"td|ƒ d S |\}}|| jks>|| jkrLtd|ƒ d S ||kr’| j| | j| k	r’| j| }| j| |t|ƒd …< || j|< d S )Nr~   z*** bad @synindexz*** bad key(s) in @synindex)ró   r'   rh   rÉ  )r   rt   r3  ÚoldÚnewZinewr   r   r   Údo_synindex  s    




zTexinfoParser.do_synindexc             C   s>   |  ¡ }x0|D ](}|| jkr(|  |¡ qtdt|ƒƒ qW d S )Nz*** No index named)ró   rÉ  Úprindexrh   r¬   )r   rt   r3  r   r   r   r   Údo_printindex-  s
    

zTexinfoParser.do_printindexc             C   sj  || j k}| j| }|sd S | jr<td| j d| j| dƒ g }t d¡}xV|D ]N\}}| ¡ }|}	x(| |¡}
|
svP |
 	¡ }||d … }qfW | 
|||f¡ qPW |d d …= | ¡  |  d¡ d  }}x”|D ]Œ\}}}||f||fkrèqÌ| jdkrtd| j |d|ƒ |  d¡ |r$d	| d
 }||kr8|  |¡ |  dt|ƒ|f ¡ || }}qÌW |  d¡ d S )Nrz   z--- Generatingr}  z^(@[a-z]+)?{z<DL COMPACT>
r=   r€   z<DT>z@code{r“   z
<DD><A HREF="%s">%s</A>
z</DL>
)rÇ  rÉ  r@   rh   rÈ  ÚreÚcompiler    r[   r|   r   Úsortr   r„   r   )r   r   Ziscodeindexr}  Zindex1Zjunkprogr?  rR   ZsortkeyZ
oldsortkeyrm   r¢   ZprevkeyZprevnoder   r   r   rÔ  5  sH    

 



 
 

zTexinfoParser.prindexc             C   sD   | j r@tdƒ t| j  ¡ ƒ}x"|D ]}t| d¡| j | ƒ q"W d S )Nz--- Unrecognized commands ---r&   )r>   rh   ÚsortedÚkeysÚljust)r   Zcmdsrp   r   r   r   Úreport]  s
    
zTexinfoParser.reportN(B  r3   r4   r5   r¸   ÚFN_ID_PATTERNr  r  r  r   rP  r   rU   rV   rW   r`   r^   rq   rr   r   ry   rg   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Å   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á   râ   rã   rä   rå   rç   rè   ré   rê   rë   rì   rô   ræ   r÷   rø   rù   rû   rú   r–   r”   Z	open_asisZ
close_asisr  r  r  r  r  r  r  r	  r
  r  r  r  r  r  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+  Zopen_titlefontZclose_titlefontr,  r-  rk   r/  r4  r2  r5  Zdo_cr6  r7  r8  r9  r:  r;  r<  r=  rA  rB  rC  rD  rE  rF  rG  rH  Zdo_finaloutZdo_setchapternewpageZdo_setfilenamerI  rJ  rK  rL  rM  rN  rO  Zdo_titleZdo_subtitleZ	do_authorZdo_vskipZdo_vfillZdo_smallbookZdo_paragraphindentZdo_headingsZdo_footnotestyleZdo_evenheadingZdo_evenfootingZdo_oddheadingZdo_oddfootingZdo_everyheadingZdo_everyfootingrS  r%   rT  rW  rX  rY  rZ  r[  r\  r]  r^  r_  Zdo_appendixsectionr`  rb  rc  rd  re  rg  rh  ri  rj  rV  rn  ro  Zdo_summarycontentsrm  rq  rr  rs  rt  ru  rv  rx  ry  rw  r  Z	end_defunr‚  rƒ  Z
end_defmacr„  r…  Zend_defspecr†  rˆ  Z	end_defvrr‡  rŠ  Z
end_defvarr‹  rŒ  Z
end_defoptr  r  Zend_deftypefnrŽ  r‘  Zend_deftypefunr’  r”  Zend_deftypevrr“  r•  Zend_deftypevarr–  r˜  Z	end_defcvr—  rš  Zend_defivarr›  r  Z	end_defoprœ  rž  Zend_defmethodrŸ  r¡  Z	end_deftpr   r£  r¤  r¥  r¦  r§  r¨  r©  rª  r«  r¬  r¯  Zdo_itemxr°  r±  r²  r³  r´  rµ  r¶  r·  Zbgn_lispZend_lispZbgn_smallexampleZend_smallexampleZbgn_smalllispZend_smalllispZbgn_displayZend_displayZ
bgn_formatZ
end_formatr¸  r¹  rº  r»  r¼  r¾  rÀ  rÁ  rÂ  rH   rÊ  rË  rÌ  rÍ  rÎ  rÏ  rÐ  r}  rÓ  Zdo_syncodeindexrÕ  rÔ  rÜ  r   r   r   r   r9   À   s~  !8
 #T		&&
		

(r9   c               @   s|   e Zd ZdZdZde d Zde d ZdZe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 )ÚTexinfoParserHTML3z&copy;z[%(id)s]z3<A ID=footnoteref%(id)s HREF="#footnotetext%(id)s">z</A>z;<FN ID=footnotetext%(id)s>
<P><A HREF="#footnoteref%(id)s">z</A>
%(text)s</P></FN>
z[<DIV CLASS=footnotes>
  <HR NOSHADE WIDTH=200>
  <STRONG><EM>Footnotes</EM></STRONG>
  <P>
c             C   s   |   d¡ d S )Nz<BQ>)r   )r   rt   r   r   r   r´  s  r¦   z TexinfoParserHTML3.bgn_quotationc             C   s   |   d¡ d S )Nz</BQ>
)r   )r   r   r   r   rµ  t  r¦   z TexinfoParserHTML3.end_quotationc             C   s   | j d | _ |  d¡ d S )Nr=   z<PRE CLASS=example><CODE>)rK   r   )r   rt   r   r   r   r¶  v  s    zTexinfoParserHTML3.bgn_examplec             C   s   |   d¡ | jd | _d S )Nz</CODE></PRE>
r=   )r   rK   )r   r   r   r   r·  {  s    
zTexinfoParserHTML3.end_examplec             C   s   | j d | _ |  d¡ d S )Nr=   z<PRE CLASS=flushleft>
)rK   r   )r   rt   r   r   r   r¹    s    z TexinfoParserHTML3.bgn_flushleftc             C   s   | j d | _ |  d¡ d S )Nr=   z4<DIV ALIGN=right CLASS=flushright><ADDRESS COMPACT>
)rK   r   )r   rt   r   r   r   r»  ƒ  s    z!TexinfoParserHTML3.bgn_flushrightc             C   s   |   d¡ | jd | _d S )Nz</ADDRESS></DIV>
r=   )r   rK   )r   r   r   r   r¼  †  s    
z!TexinfoParserHTML3.end_flushrightc             C   s   |   d¡ |   d¡ d S )Nz<UL PLAIN CLASS=menu>
z  <LH>Menu</LH>
)r   )r   rt   r   r   r   r¾  Š  s    
zTexinfoParserHTML3.bgn_menuc             C   s   |   d¡ d S )Nz</UL>
)r   )r   r   r   r   rÀ    s    zTexinfoParserHTML3.end_menuN)r3   r4   r5   r¸   rÝ  r  r  r  r8   rP  r´  rµ  r¶  r·  r¹  r»  r¼  r¾  rÀ  r   r   r   r   rÞ  e  s   rÞ  c               @   s´   e Zd ZdZe 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ejfdd„Zejfdd„Zdejfdd„Zdejfdd„Zdd„ Zejfdd„Zd d!„ Zd"S )#ÚHTMLHelpa¡  
    This class encapsulates support for HTML Help. Node names,
    file names, menu items, index items, and image file names are
    accumulated until a call to finalize(). At that time, three
    output files are created in the current directory:

        `helpbase`.hhp  is a HTML Help Workshop project file.
                        It contains various information, some of
                        which I do not understand; I just copied
                        the default project info from a fresh
                        installation.
        `helpbase`.hhc  is the Contents file for the project.
        `helpbase`.hhk  is the Index file for the project.

    When these files are used as input to HTML Help Workshop,
    the resulting file will be named:

        `helpbase`.chm

    If none of the defaults in `helpbase`.hhp are changed,
    the .CHM file will have Contents, Index, Search, and
    Favorites tabs.
    z@code{(.*?)}c             C   sR   || _ || _d | _d | _d | _g | _i | _i | _i | _g | _	d| _
i | _i | _d S )Nr   )Úhelpbaser   ÚprojectfileÚcontentfileÚ	indexfileÚnodelistZ	nodenamesÚ	nodeindexr?   Ú	indexlistÚcurrentÚmenudictÚdumped)r   rà  r   r   r   r   r   ­  s    zHTMLHelp.__init__c             C   sJ   |||||f}|| j |< t| jƒ| j|< | j |¡ || _g | j| j< d S )N)r?   r'   rä  rå  r   rç  rè  )r   r   r   r	   r
   rþ   rR   r   r   r   rQ  ½  s    
zHTMLHelp.addnodec             C   s   | j | j }| |¡ d S )N)rè  rç  r   )r   r"   rŽ   r   r   r   r…   É  s    zHTMLHelp.menuitemc             C   s   || j |< d S )N)r?   )r   Z	imagenamer   r   r   rý   Î  s    zHTMLHelp.addimagec             C   s   | j  ||f¡ d S )N)ræ  r   )r   rt   r"   r   r   r   r}  Ñ  s    zHTMLHelp.indexc             C   s   d S )Nr   )r   r   r   r   r½  Ô  s    zHTMLHelp.beginmenuc             C   s   d S )Nr   )r   r   r   r   r¿  ×  s    zHTMLHelp.endmenuc          
   C   sÖ  | j s
d S | j d }| j d }| j d }| j d }| j }| jd \}}}}	}
|
}yHt|dƒ}td|d td	|d td
|d td|d td|d td| d |d td| d |d td| d |d td|d td| d |d td| d |d td|d td|d td|d td|d td|d td| d | d |d td|d td|d td|d |  |¡ | ¡  W n: tk
rÔ } zt|d|ƒ t d¡ W d d }~X Y nX yÔt|dƒ}td|d td|d td |d td!|d td"|d td#|d td$|d td%|d td&|d td'|d td(|d td)|d td*|d |  	|¡ td+|d td,|d | ¡  W n: tk
rä } zt|d|ƒ t d¡ W d d }~X Y nX y°t|dƒ}td|d td-|d td |d td!|d td"|d td#|d td$|d td%|d td.|d td/|d |  
|¡ td+|d td,|d | ¡  W n: tk
rÐ } zt|d|ƒ t d¡ W d d }~X Y nX d S )0Nz.chmz.hhpz.hhcz.hhkr   r   z	[OPTIONS])r­   zAuto Index=YeszBinary TOC=NozBinary Index=YeszCompatibility=1.1zCompiled file=r   zContents file=zDefault topic=zError log file=ErrorLog.logzIndex file=zTitle=zDisplay compile progress=YeszFull-text search=YeszDefault window=mainz	[WINDOWS]zmain=,"z","z=","","",,,,,0x23520,222,0x1046,[10,10,780,560],0xB0000,,,,,,0z[FILES]r€   r=   z.<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">z0<!-- This file defines the table of contents -->z<HTML>z<HEAD>zG<meta name="GENERATOR" content="Microsoft&reg; HTML Help Workshop 4.1">z<!-- Sitemap 1.0 -->z</HEAD>z<BODY>z'   <OBJECT type="text/site properties">z2     <param name="Window Styles" value="0x800025">z*     <param name="comment" value="title:">z)     <param name="comment" value="base:">z   </OBJECT>z</BODY>z</HTML>z$<!-- This file defines the index -->z$<OBJECT type="text/site properties">z	</OBJECT>)rà  rä  r   rh   Ú	dumpfilesr   r«   ÚsysÚexitÚ	dumpnodesÚ	dumpindex)r   Z
resultfilerá  râ  rã  r   r   ZtopnextZtopprevZtopupZtopfileZdefaulttopicr   r®   r   r   r   r/   Ú  s¢    









zHTMLHelp.finalizec             C   s,   t | j ¡ ƒ}x|D ]}t||d qW d S )N)r­   )rÙ  r?   rL   rh   )r   ÚoutfileÚfilelistrþ   r   r   r   rê  9  s    
zHTMLHelp.dumpfilesc             C   s`   i | _ | jr&| jd \}}}}}|| _td|d x| jD ]}|  |d|¡ q:W td|d d S )Nr   z<UL>)r­   z</UL>)ré  rä  Útopnoderh   Údumpnode)r   rï  r"   rx   rR   r   r   r   rí  >  s    zHTMLHelp.dumpnodesr   c       
      C   sÂ   |r¾|\}}}}}|| _ || jkr&d S d| j|< td| d|d tdd|d td| d d|d td| d d|d td|d	 y | j| }	|  |	|d
 |¡ W n tk
r¼   Y nX d S )Nr=   r{   )r|   r­   z <LI><OBJECT type="text/sitemap">z<param name="Name" value="z">z<param name="Local" value="z	</OBJECT>)r­   r~   )rç  ré  rh   rè  Údumpmenur   )
r   rR   Úindentrï  r"   r   r	   r
   rþ   rŽ   r   r   r   rò  I  s     


zHTMLHelp.dumpnodec             C   s€   |r|| j }|| jkr0td| d |d |d7 }x$|D ]}|  |¡}|  |||¡ q6W || jkr|td| d |d |d8 }d S )Nr{   z<UL>)r­   r~   z</UL>)rç  rñ  rh   Úgetnoderò  )r   rŽ   rô  rï  ZcurrentnodeÚitemZmenunoder   r   r   ró  b  s    



zHTMLHelp.dumpmenuc             C   s@   y| j | }| j| S  tk
r(   d S  tk
r:   d S X d S )N)rå  rä  r   Ú
IndexError)r   r"   r}  r   r   r   rõ  o  s    

zHTMLHelp.getnodec             C   s–   t d|d xx| jD ]n\}}|  |¡}t|ƒ}| jd | }t dd|d t d| d d|d t d	| d d|d t d
|d qW t d|d d S )Nz<UL>)r­   r   z <LI><OBJECT type="text/sitemap">r{   )r|   r­   z<param name="Name" value="z">z<param name="Local" value="z	</OBJECT>z</UL>)rh   ræ  Ú
codeexpandr   r   )r   rï  r?  Úlocationr   r   r   rî  y  s    
zHTMLHelp.dumpindexc             C   sX   | j  |¡}|s|S | d¡\}}| d¡\}}|d |… |||…  ||d …  }|S )Nr   r=   )Úcodeprogr[   rj   )r   r   Úcor†   r|   rn   ro   r   r   r   rø  …  s    $zHTMLHelp.codeexpandN)r3   r4   r5   r6   rÖ  r×  rú  r   rQ  r…   rý   r}  r½  r¿  r/   rë  Ústdoutrê  rí  rò  ró  rõ  rî  rø  r   r   r   r   rß  ’  s"   
_
rß  c             C   s   d|  d S )Nz@var{r“   r   )Ústrr   r   r   r|    s    r|  c             C   sŒ   g }d}t | ƒ}xZ||k rjx ||k r:| | dkr:|d }qW ||krFP |}t| ||ƒ}| | ||… ¡ qW xt |ƒ|k r†| d¡ qnW |S )Nr   z 	
r=   r   )r'   Úfindwordendr   )rý  Z	minlengthr3  r¢   r£   r™   r   r   r   r{  •  s    
   r{  z[@{} ]c             C   sŽ   d}x„||k rˆt  | |¡}|s P | ¡ }| | }|d }|dkrJ|d }q|dkr\|d }q|dkrn|d }q|dkr|dkr|d S qW |S )Nr   r=   r•   r’   r“   r{   )Úfwprogr˜   r™   )rý  r¢   r£   rk  rm   r‡   r   r   r   rþ  ¥  s"    
  
 
 
 rþ  c             C   s   |   ¡ } t| ƒd S )Nz.html)rƒ   Úfixfunnychars)r"   r   r   r   r   µ  s    r   z!@-=+.c             C   sZ   d}xP|t | ƒk rT| | }|tkrFd}| d |… | | |d d …  } |t |ƒ }qW | S )Nr   r¼   r=   )r'   Ú	goodchars)r$   r¢   r‡   r   r   r   r   Á  s     r   c             C   s¨   | sdS xšt jt jt jfD ]†}| d }||kr| |¡d }|t|ƒkrˆt| ƒdkrn|d d } | dkr†d} qœt| d d… ƒ|d  } n| d d… ||  } | S qW | S )NÚ1rc   r=   r   r~   Ú00Ú10)rž   ÚdigitsÚascii_lowercaseÚascii_uppercaser}  r'   r®  )rî   ÚsequenceZlastcr¢   r   r   r   r®  Í  s    r®  c           
   C   s®  dd l } d}d}d}d}d}x$| jd dgkr@|d }| jd= qW | jd dkr\d}| jd= | jd dkrvd}| jd= | jd dkrd}| jd= | jd dkr´| jd	 }| jdd
…= t| jƒd
krÖtddƒ |  d	¡ |râtƒ }ntƒ }||_||_||_	| jd }| jd	 }	| 
|	¡ | tj |¡¡ t||	ƒ}| |¡ yt|dƒ}
W n: tk
r† } zt|d|ƒ |  d¡ W d d }~X Y nX | |
¡ |
 ¡  | ¡  | ¡  d S )Nr   r   r=   z-dz-pz-cz-3z-Hr~   r   z5usage: texi2hh [-d [-d]] [-p] [-c] [-3] [-H htmlhelp]zinputfile outputdirectoryr¨   r€   )rë  Úargvr'   rh   rì  rÞ  r9   r2   r@   rA   rV   rW   r©   rª   r   rß  rU   r   r«   r`   r   rÜ  r/   )rë  r@   rA   r2   Zhtml3rF   rà  Úparserr­   r   r   r®   r   r   r   Útestá  s\    







r  Ú__main__)r©   rë  rž   rÖ  r\   r×  ri   rZ   Úkwprogr—   r‚   r   r8   r9   rÞ  rß  r|  r{  rÿ  rþ  r   rŸ   r  r  r   r®  r  r3   r   r   r   r   Ú<module>B   sL   




	[           0-   
9
