B -DB~@sddlZddlZddlZddlZdZedZedZedZedZ edZ Gdd d Z Gd d d e Z Gd d d Z Gddde ZGdddZddZddZedZddZddZejejdZddZddZd d!Zed"kredS)#Nz\input texinfoz^@([a-z]+)([ ]|$)z^[ ]*$z@[a-z]+z [ @{}&<>]z5^\* ([^:]*):(:|[ \t]*([^\t,\n.]+)([^ \t\n]*))[ \t\n]*c@sbeZdZdZdZdZdZdZddZdd Z d d Z dd dZ ddZ ddZ ddZddZd S)HTMLNodezSome 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. z2rz cCs@||_||_|r||_n||_||_||_||_||_g|_dS)N)dirnamenametopnametitlenextprevuplines)selfdirrrrrr r rz )lowerrr)r labelnodenamerelZrevaddrrrrrlinks  z HTMLNode.linkcCst|j}d|j|_g|_|||d|j}g|_|jd|jdt |j d|j dt |j d|j dt |j d|j d||_ |dkrd ||_dS) NrzF z z

%s )lenr joinr open_links output_links close_linksDOCTYPErrrr r rr)r lengthlinksrrrfinalizes   ZzHTMLNode.finalizecCs|ddS)Nz


)r)r rrrr)szHTMLNode.open_linkscCs|ddS)Nz
)r)r rrrr+szHTMLNode.close_linkscCsn|j|jkr|d|j|jd|jdd|jd|jdd|jd|jdd|j|jkrj|d |jdS) Nz Contz NextNext)r#z PrevZPreviousz UpUpz Top)contrr%r r rr)r rrrr*s  zHTMLNode.output_links)NN)__name__ __module__ __qualname____doc__r,typer2rrrrr%r/r)r+r*rrrrrZs  rc@s eZdZdZddZddZdS) HTML3Nodez;cCs|ddS)Nz )r)r rrrr+szHTML3Node.close_linksN)r3r4r5r,r)r+rrrrr8sr8c@s eZdZdZdZdedZdedZdZeZ dd Z d d Z d d Z ddZ ddZddZddZddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Z d6d7Z!d8d9Z"d:d;Z#dd?Z%d@dAZ&dBdCZ'dDdEZ(dFdGZ)dHdIZ*dJdKZ+dLdMZ,dNdOZ-dPdQZ.dRdSZ/dTdUZ0dVdWZ1dXdYZ2dZd[Z3d\d]Z4d^d_Z5d`daZ6dbdcZ7dddeZ8dfdgZ9dhdiZ:djdkZ;dldmZdrdsZ?dtduZ@dvdwZAdxdyZBdzd{ZCd|d}ZDd~dZEddZFddZGddZHddZIddZJddZKddZLddZMddZNddZOddZPddZQddZRddZSddZTddZUddZVddZWddZXddZYddZZddZ[ddZ\ddZ]ddZ^ddZ_e^Z`e_ZaddZbddZcddZdddZeddZfddZgddZhddÄZiddńZjddDŽZkddɄZldd˄Zmdd̈́ZnddτZoddфZpddӄZqddՄZrddׄZsddلZtddۄZudd݄Zvdd߄ZwddZxddZyddZzddZ{ddZ|ddZ}ddZ~ddZddZddZddZddZddZddZddZddZddZe^Ze_ZddZddZddZdd Zd d Zd d ZddZeZddZddZddZddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/ZeZeZeZd0d1Zd2d3Zd4d5Zd6d7Zd8d9Zd:d;Zd<d=ZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZd>d?Zd@dAZdBdCZdDdEZdFdGZdHdIZdJdKZdLdMZÐdNdOZĐdPdQZŐdRdSZƐdTdUZeZȐdVdWZɐdXdYZʐdZd[Zːd\d]Z̐d^d_Z͐d`daZΐdbdcZϐdddeZАdfdgZѐdhdiZҐdjdkZӐdldmZeZՐdndoZ֐dpdqZאdrdsZؐdtduZِdvdwZڐdxdyZېdzd{Zܐd|d}Zݐd~dZސddZߐddZeZddZddZeZddZddZeZddZddZeZddZddZeZddZddZeZddZddZeZddZddZeZddZddZeZddZddZeZddZddZeZddZddZeZddZddZeZddZddZeZddZ ddZ eZ ddZ ddZ ddZddÄZdĐdńZdƐdDŽZdȐdɄZdʐd˄Zd̐d̈́ZdΐdτZdАdфZdҐdӄZeZdԐdՄZd֐dׄZdؐdلZdڐdۄZdܐd݄Zdސd߄ZddZddZ eZ!e Z"eZ#e Z$e!Z%e"Z&eZ'e Z(e'Z)e(Z*ddZ+ddZ,ddZ-ddZ.ddZ/ddZ0ddZ1ddZ2ddZ3ddZ4ddZ5ddZ6ddZ7ddZ8ddZ9ddZ:ddZ;ddZ<dd Z=e=Z>d d Z?d d Z@ddZAdS( TexinfoParserz©z(%(id)s)z5zz5z %(text)s

zJ


Footnotes

cCsi|_i|_d|_d|_d|_d|_d|_d|_g|_d|_ d|_ d|_ d|_ d|_ d|_|g|_g|_d|_ddi|_i|_g|_d|_d|_d|_d|_g|_d|_d|_dS)NrZtmp.rZhtml)unknown filenames debugging print_headersnodefp nodelinenor.savetext savestackhtmlhelpr includedirr"rr resetindexcontents numberingnofillvalues stackinfo footnotesitemarg itemnumber itemindexnode nodestackr2 includedepth)r rrrrs: zTexinfoParser.__init__cCs ||_dS)N)rD)r rDrrr sethtmlhelpszTexinfoParser.sethtmlhelpcCs ||_dS)N)r)r rrrr setdirnameszTexinfoParser.setdirnamecCs ||_dS)N)rE)r rErrr setincludedirszTexinfoParser.setincludedircCsn|}d}x.|r:|ddks(t|r:|}|d}qW|dtttkr^tdtf|||dS)Nr;r%zfile does not begin with %r)readlineblprogmatchr'MAGIC SyntaxError parserest)r rrlinenorrrparses zTexinfoParser.parsec Cs|}d|_d|_g|_g}x"|js>|}|jd|_|sh|rV|jsR||g}|dkrftdP|d}t|}|r| d\}}|||} | dkr| |n$|r|js||g}| ||qt |r2d|jkr2d|jkr2|r<|js<|||j r"|dn |dg}q| |qW|jrPtd |jrltd td |j|jdkrx2|jr|jd |jd |jd =qzWdS) Nrr;z*** EOF before @bye)ZnoindentZrefillformatZexample z

z*** Still skipping at the endz*** Stack not empty at the endz***)doneskipstackrWrAprocessprintcmprogrYspanrcommandrXrIrrRrQr/r) r rZinitial_linenor]accurmoabcmdrrrr\ sb                zTexinfoParser.parserestcCs"|jdk r|j|jd|_dS)Nr)rBrCr)r rrr startsavingAs zTexinfoParser.startsavingcCs8|j}t|jdkr*|jd|_|jd=nd|_|p6dS)Nrrar)rBr'rC)r rBrrrcollectsavingsHs   zTexinfoParser.collectsavingscGsjyd|}Wnt|tYnX|jdk r@|j||_n&|jrT|j|n|jrf|j|dS)Nr)r(rf TypeErrorrBr@rrP)r argsrrrrrRs  zTexinfoParser.writecCs&|jdk rtd|}|jr(||jr|jdkr|d|jdd\}}}}| d|| d|| d||j |j kr| d|j |d|d |j d|_n`|j r|js|j jr|j jr|j jr|j jr|j |j n|j|j d|_ d |_ dS) Nz$*** Still saving text at end of noder&z


r0ZPrevr1ZTopz r)rBrfrprLwritefootnotesr@rAr nodelinksr%r"rrrPr2r7rr r r/rrQr)r dummyrrr r rrrendnode`s6            zTexinfoParser.endnodec Cs|jdkrptd|jd|j|jdd|rBt|ddddd|ddds^|ddrjtdddt|rrx|D]}t|}|s|d }||q| d\}}| d\}}| d \}} | d \} } | d \} } |||}||| }|dd kr|}n || | }|| | }| dt |d|d|d |j ||||dqWnd|}||dS)Nr;!zprocess: )endrz...r`rs:z
  • zr)r>rfrcrdinmenumiprogrYstripexpandrhrrrDmenuitemr()r rjrrkbgnrzrlrmcdefghr!r"punctrrrrresB              zTexinfoParser.processcCsd|j}xL|rR|ddkrRy|jt|r,dSWntk rBYnX|dd}qW|ob|ddkS)Nra)ZifsetZifclearrmenu)rdrKr'KeyError)r rdrrrrszTexinfoParser.inmenuc Csg}d}t|}x^||krp|}t||}|r<|}n|||dP||||||}|d}|dkr|dq|dkr|dq|dkr|dq|dkr|d q|d kr|d q|d krD|std |d q|d}|d=yt|d|} Wn"tk r:| |wYnX| q|dkrZt d||}x(||kr||t j kr|d}q`W||kr|d}|||}|dkrq||q|||}||kr2||d kr2|d}||yt|d|} Wn"tk r(| |wYnX| qyt|d|} Wn"tk rf||wYnX| qW|rtd|dS)Nrr;r` filer;rz<-- file)ospathr(rErIOErrorrfreprr>rbrcrdrRr\r)r rrfilermsgZ save_doneZ save_skipZ save_stackrrr do_include)s&   zTexinfoParser.do_includecCsdS)Nr)r rrropen_dmn@rzTexinfoParser.open_dmncCsdS)Nr)r rrr close_dmnArzTexinfoParser.close_dmncCs|ddS)Nz...)r)r rrr open_dotsCrzTexinfoParser.open_dotscCsdS)Nr)r rrr close_dotsDrzTexinfoParser.close_dotscCsdS)Nr)r rrr open_bulletFrzTexinfoParser.open_bulletcCsdS)Nr)r rrr close_bulletGrzTexinfoParser.close_bulletcCs|ddS)NZTeX)r)r rrropen_TeXIrzTexinfoParser.open_TeXcCsdS)Nr)r rrr close_TeXJrzTexinfoParser.close_TeXcCs||jdS)N)rCOPYRIGHT_SYMBOL)r rrrhandle_copyrightLrzTexinfoParser.handle_copyrightcCs||jdS)N)rr)r rrropen_copyrightMrzTexinfoParser.open_copyrightcCsdS)Nr)r rrrclose_copyrightNrzTexinfoParser.close_copyrightcCs|ddS)N-)r)r rrr open_minusPrzTexinfoParser.open_minuscCsdS)Nr)r rrr close_minusQrzTexinfoParser.close_minuscCs|ddS)Nz¡)r)r rrropen_exclamdownwrzTexinfoParser.open_exclamdowncCsdS)Nr)r rrrclose_exclamdownxrzTexinfoParser.close_exclamdowncCs|ddS)Nz¿)r)r rrropen_questiondownyrzTexinfoParser.open_questiondowncCsdS)Nr)r rrrclose_questiondownzrz TexinfoParser.close_questiondowncCs|ddS)Nzå)r)r rrropen_aa{rzTexinfoParser.open_aacCsdS)Nr)r rrrclose_aa|rzTexinfoParser.close_aacCs|ddS)NzÅ)r)r rrropen_AA}rzTexinfoParser.open_AAcCsdS)Nr)r rrrclose_AA~rzTexinfoParser.close_AAcCs|ddS)Nzæ)r)r rrropen_aerzTexinfoParser.open_aecCsdS)Nr)r rrrclose_aerzTexinfoParser.close_aecCs|ddS)NzÆ)r)r rrropen_AErzTexinfoParser.open_AEcCsdS)Nr)r rrrclose_AErzTexinfoParser.close_AEcCs|ddS)Nzø)r)r rrropen_orzTexinfoParser.open_ocCsdS)Nr)r rrrclose_orzTexinfoParser.close_ocCs|ddS)NzØ)r)r rrropen_OrzTexinfoParser.open_OcCsdS)Nr)r rrrclose_OrzTexinfoParser.close_OcCs|ddS)Nzß)r)r rrropen_ssrzTexinfoParser.open_sscCsdS)Nr)r rrrclose_ssrzTexinfoParser.close_sscCs|ddS)NZoe)r)r rrropen_oerzTexinfoParser.open_oecCsdS)Nr)r rrrclose_oerzTexinfoParser.close_oecCs|ddS)NZOE)r)r rrropen_OErzTexinfoParser.open_OEcCsdS)Nr)r rrrclose_OErzTexinfoParser.close_OEcCs|ddS)Nzl/)r)r rrropen_lrzTexinfoParser.open_lcCsdS)Nr)r rrrclose_lrzTexinfoParser.close_lcCs|ddS)NzL/)r)r rrropen_LrzTexinfoParser.open_LcCsdS)Nr)r rrrclose_LrzTexinfoParser.close_LcCs|ddS)Nz=>)r)r rrr open_resultrzTexinfoParser.open_resultcCsdS)Nr)r rrr close_resultrzTexinfoParser.close_resultcCs|ddS)Nz==>)r)r rrropen_expansionrzTexinfoParser.open_expansioncCsdS)Nr)r rrrclose_expansionrzTexinfoParser.close_expansioncCs|ddS)Nz-|)r)r rrr open_printrzTexinfoParser.open_printcCsdS)Nr)r rrr close_printrzTexinfoParser.close_printcCs|ddS)Nz error-->)r)r rrr open_errorrzTexinfoParser.open_errorcCsdS)Nr)r rrr close_errorrzTexinfoParser.close_errorcCs|ddS)Nz==)r)r rrr open_equivrzTexinfoParser.open_equivcCsdS)Nr)r rrr close_equivrzTexinfoParser.close_equivcCs|ddS)Nz-!-)r)r rrr open_pointrzTexinfoParser.open_pointcCsdS)Nr)r rrr close_pointrzTexinfoParser.close_pointcCs|d|dS)Nzsee )rro)r rrr open_pxrefs zTexinfoParser.open_pxrefcCs |dS)N)makeref)r rrr close_pxrefszTexinfoParser.close_pxrefcCs|d|dS)NzSee )rro)r rrr open_xrefs zTexinfoParser.open_xrefcCs |dS)N)r)r rrr close_xrefszTexinfoParser.close_xrefcCs |dS)N)ro)r rrropen_refszTexinfoParser.open_refcCs |dS)N)r)r rrr close_refszTexinfoParser.close_refcCs|d|dS)NzSee info file )rro)r rrr open_inforefs zTexinfoParser.open_inforefcCs^|}dd|dD}xt|dkr6|dqW|d}|d}|d|d |d dS) NcSsg|] }|qSr)r).0srrr sz/TexinfoParser.close_inforef..,r}rrr|`z ', node `')rpsplitr'rr)r rrrrPrrrr close_inforefszTexinfoParser.close_inforefcCs|}dd|dD}xt|dkr6|dqW|d}}|drT|d}|d}|d }t|}|rd |d |}|d |d |ddS)NcSsg|] }|qSr)r)rrrrrrsz)TexinfoParser.makeref..rrrr|r}rsz../rz z)rprr'rrr)r rrrr"r!rrhrefrrrrs zTexinfoParser.makerefcCs |dS)N)ro)r rrr open_urefszTexinfoParser.open_urefcCsf|}dd|dD}xt|dkr6|dqW|d}|d}|sP|}|d|d |d dS) NcSsg|] }|qSr)r)rrrrrrsz,TexinfoParser.close_uref..rr|rrr;z z)rprr'rr)r rrrrr!rrr close_urefszTexinfoParser.close_urefcCs |dS)N)ro)r rrr open_imageszTexinfoParser.open_imagecCs |dS)N) makeimage)r rrr close_imageszTexinfoParser.close_imagec Cs"|}dd|dD}xt|dkr6|dqW|d}|d}|d}|d }|d }|jd |}tj|d r|d 7}n@tj|d r|d 7}n&tj|dr|d7}n td|| d|d|rd|dpd|rd|dpd|r d|dp dd|j |dS)NcSsg|] }|qSr)r)rrrrrrsz+TexinfoParser.makeimage..rrrrr;r|r}rsrz.pngz.jpgz.gifz*** Cannot find image z ) rprr'rrrrexistsrfrrDaddimage) r rrrfilenamewidthZheightZaltZextZ imagelocationrrrrs.     zTexinfoParser.makeimagecCsdS)Nr)r rrrrrzTexinfoParser.open_cCsdS)Nr)r rrrrrzTexinfoParser.close_cCs|ddS)Nz)r)r rrr open_citerzTexinfoParser.open_citecCs|ddS)Nz)r)r rrr close_citerzTexinfoParser.close_citecCs|ddS)Nz)r)r rrr open_coderzTexinfoParser.open_codecCs|ddS)Nz)r)r rrr close_coderzTexinfoParser.close_codecCs|ddS)Nz)r)r rrropen_trzTexinfoParser.open_tcCs|ddS)Nz)r)r rrrclose_trzTexinfoParser.close_tcCs|ddS)Nz)r)r rrropen_dfnrzTexinfoParser.open_dfncCs|ddS)Nz)r)r rrr close_dfnrzTexinfoParser.close_dfncCs|ddS)Nz)r)r rrr open_emph rzTexinfoParser.open_emphcCs|ddS)Nz)r)r rrr close_emph!rzTexinfoParser.close_emphcCs|ddS)Nz)r)r rrropen_i#rzTexinfoParser.open_icCs|ddS)Nz)r)r rrrclose_i$rzTexinfoParser.close_icCs2t|jd}||jdt|i|dS)Nr;id)r'rLrFN_SOURCE_PATTERNrro)r r rrr open_footnote&szTexinfoParser.open_footnotecCs&t|jd}|j||fdS)Nr;)r'rLrrp)r r rrrclose_footnote-szTexinfoParser.close_footnotecCsD||jx,|jD]"\}}||jt||dqWg|_dS)N)r r)r FN_HEADERrLFN_TARGET_PATTERNr)r r rrrrrt1s  zTexinfoParser.writefootnotescCs|ddS)Nz)r)r rrr open_file8rzTexinfoParser.open_filecCs|ddS)Nz)r)r rrr close_file9rzTexinfoParser.close_filecCs|ddS)Nz)r)r rrropen_kbd;rzTexinfoParser.open_kbdcCs|ddS)Nz)r)r rrr close_kbd<rzTexinfoParser.close_kbdcCs|ddS)Nz)r)r rrropen_key>rzTexinfoParser.open_keycCs|ddS)Nz)r)r rrr close_key?rzTexinfoParser.close_keycCs|ddS)Nz)r)r rrropen_rArzTexinfoParser.open_rcCs|ddS)Nz)r)r rrrclose_rBrzTexinfoParser.close_rcCs|ddS)Nz`)r)r rrr open_sampDrzTexinfoParser.open_sampcCs|ddS)Nz')r)r rrr close_sampErzTexinfoParser.close_sampcCs|ddS)Nz )r)r rrropen_scGrzTexinfoParser.open_sccCs|ddS)Nz )r)r rrrclose_scHrzTexinfoParser.close_sccCs|ddS)Nz)r)r rrr open_strongJrzTexinfoParser.open_strongcCs|ddS)Nz )r)r rrr close_strongKrzTexinfoParser.close_strongcCs|ddS)Nz)r)r rrropen_bMrzTexinfoParser.open_bcCs|ddS)Nz)r)r rrrclose_bNrzTexinfoParser.close_bcCs|ddS)Nz)r)r rrropen_varPrzTexinfoParser.open_varcCs|ddS)Nz)r)r rrr close_varQrzTexinfoParser.close_varcCs|ddS)Nz )r)r rrropen_wSrzTexinfoParser.open_wcCs|ddS)Nz )r)r rrrclose_wTrzTexinfoParser.close_wcCs |dS)N)ro)r rrropen_urlVrzTexinfoParser.open_urlcCs|}|d|d|ddS)Nz z)rpr)r rrrr close_urlWszTexinfoParser.close_urlcCs |dS)N)ro)r rrr open_email[rzTexinfoParser.open_emailcCs|}|d|d|ddS)Nzz)rpr)r rrrr close_email\szTexinfoParser.close_emailcCsdS)Nr)r rrr open_smallcrzTexinfoParser.open_smallcCsdS)Nr)r rrr close_smalldrzTexinfoParser.close_smallc Cs|d\}}|||}||d}|jdkrTtd|jd|j|jd||yt|d|}Wnbtk ryt|d|}Wn&tk r|js|||dSX|j |||dSX|jr|dkr||dS)Nr;rxzcommand:rZdo_Zbgn_rz) rhrr>rfrcrdrr unknown_cmdr)r rrkrlrmrnrrfuncrrrrifs(     zTexinfoParser.commandcCs>tdd||||jkr&d|j|<n|j|d|j|<dS)Nz *** unknownrr;)rfr<)r rnrrrrrr*}s  zTexinfoParser.unknown_cmdcCs|}|stdnj|d}|jr2|jd|kr@td|dn|jd=yt|d|}Wntk rx||dSX|dS)Nz*** @end w/o argsrraz*** @endZ unexpectedZend_)rrfrdrr unknown_end)r rrwordsrnr+rrrdo_ends  zTexinfoParser.do_endcCsDd|}tdd|||jkr,d|j|<n|j|d|j|<dS)Nzend z *** unknownrr;)rfr<)r rnrrrr,s   zTexinfoParser.unknown_endcCsdS)Nr)r rrrrr do_commentrzTexinfoParser.do_commentcCsdS)Nr)r rrrrr bgn_ifinforzTexinfoParser.bgn_ifinfocCsdS)Nr)r rrr end_ifinforzTexinfoParser.end_ifinfocCs|jd|_dS)Nr;)rc)r rrrrr bgn_iftexrzTexinfoParser.bgn_iftexcCs|jd|_dS)Nr;)rc)r rrr end_iftexrzTexinfoParser.end_iftexcCs|jd|_dS)Nr;)rc)r rrrrr bgn_ignorerzTexinfoParser.bgn_ignorecCs|jd|_dS)Nr;)rc)r rrr end_ignorerzTexinfoParser.end_ignorecCs|jd|_dS)Nr;)rc)r rrrrrbgn_texrzTexinfoParser.bgn_texcCs|jd|_dS)Nr;)rc)r rrrend_texrzTexinfoParser.end_texcCsD|d}|d}t|dkr$d}nd|dd}||j|<dS)Nryrr;)rr'r(rJ)r rrZfieldskeyvaluerrrdo_sets   zTexinfoParser.do_setcCsd|j|<dS)N)rJ)r rrrrrdo_clearszTexinfoParser.do_clearcCsJ||jks|j|dkr6|jd|_d|jt|j<nd|jt|j<dS)Nr;r)rJrcrKr'rd)r rrrrr bgn_ifsets zTexinfoParser.bgn_ifsetcCsdy6|jt|jdr"|jd|_|jt|jd=Wn(tk r^tdt|jdYnXdS)Nr;z*** end_ifset: KeyError :)rKr'rdrcrrf)r rrr end_ifsets  zTexinfoParser.end_ifsetcCsJ||jkr6|j|dk r6|jd|_d|jt|j<nd|jt|j<dS)Nr;r)rJrcrKr'rd)r rrrrr bgn_ifclears zTexinfoParser.bgn_ifclearcCsdy6|jt|jdr"|jd|_|jt|jd=Wn(tk r^tdt|jdYnXdS)Nr;z*** end_ifclear: KeyError :)rKr'rdrcrrf)r rrr end_ifclears  zTexinfoParser.end_ifclearcCs |dS)N)ro)r rrr open_valueszTexinfoParser.open_valuecCs2|}||jkr$||j|n td|dS)Nz*** Undefined value: )rprJrrf)r r8rrr close_values zTexinfoParser.close_valuecCs |||||_dS)N)rorrpr)r rrrrr do_settitles zTexinfoParser.do_settitlecCsdS)Nr)r rrrrr do_parskiprzTexinfoParser.do_parskipcCs|d|_dS)Nr;)rwrb)r rrrrrdo_byeszTexinfoParser.do_byecCs|jd|_dS)Nr;)rc)r rrrrr bgn_titlepagerzTexinfoParser.bgn_titlepagecCs|jd|_dS)Nr;)rc)r rrr end_titlepagerzTexinfoParser.end_titlepagecCsdS)Nr)r rrrrrdo_shorttitlepagerzTexinfoParser.do_shorttitlepagecCs"|d|||ddS)Nz

    z

    )rr)r rrrrr do_centers  zTexinfoParser.do_centerc Cs|d|_dd|dD}xt|dkr<|dq$W||_|dd\}}}}|jdt|}||jkrt d|n|j rt d |j d |d |j|<||_ |j r|j r|j |j d _ |js||_|}|jr|d |j}||j|j |j|||||_|j|j ||||dS)NrcSsg|] }|qSr)r)rrrrrrsz)TexinfoParser.do_node..rrsrrz*** Filename already in use: rxz --- writingr;raz -- )rwrArr'rrurrr=rfr>r"r2rQrrNoderPrDaddnode) r rrpartsrrr r rrrrrdo_nodes0    zTexinfoParser.do_nodec Cs:|r6|dkrd}nt|}||d|d|d|ddS)Nz(dir)z ../dir.htmlz : z )r rr)r r!r"r$rrrr%-s   zTexinfoParser.linkcCs|jr||j_x|jr|jdj|krL|jd|jd|jd=q|jdj|kr|jdjsx|jj|jd_|jjs|jdj|j_|jd|jd|jd=q|dkr|jjs|jdj|j_PqWdS)Nrar;) rPr7rQr/rrrr r )r r7rrrpopstack8s$   zTexinfoParser.popstackcCs|d|d|ddS)NH1rr;)headingrM)r rrrrr do_chapterMszTexinfoParser.do_chaptercCs|d|d|ddS)NrNrar;)rOrM)r rrrrr do_unnumberedQszTexinfoParser.do_unnumberedcCs|d|d|ddS)NrNrar;)rOrM)r rrrrr do_appendixTszTexinfoParser.do_appendixcCs|d|ddS)NrNra)rO)r rrrrrdo_topWszTexinfoParser.do_topcCs|d|ddS)NrNra)rO)r rrrrrdo_chapheadingYszTexinfoParser.do_chapheadingcCs|d|ddS)NrNra)rO)r rrrrrdo_majorheading[szTexinfoParser.do_majorheadingcCs|d|d|ddS)NrNr;r|)rOrM)r rrrrr do_section^szTexinfoParser.do_sectioncCs|d|d|ddS)NrNrar|)rOrM)r rrrrrdo_unnumberedsecbszTexinfoParser.do_unnumberedseccCs|d|d|ddS)NrNrar|)rOrM)r rrrrrdo_appendixseceszTexinfoParser.do_appendixseccCs|d|ddS)NrNra)rO)r rrrrr do_headingiszTexinfoParser.do_headingcCs|d|d|ddS)NH2r|r})rOrM)r rrrrr do_subsectionlszTexinfoParser.do_subsectioncCs|d|d|ddS)NrZrar})rOrM)r rrrrrdo_unnumberedsubsecosz!TexinfoParser.do_unnumberedsubseccCs|d|d|ddS)NrZrar})rOrM)r rrrrrdo_appendixsubsecrszTexinfoParser.do_appendixsubseccCs|d|ddS)NrZra)rO)r rrrrr do_subheadinguszTexinfoParser.do_subheadingcCs|d|d|ddS)NH3r}rs)rOrM)r rrrrrdo_subsubsectionxszTexinfoParser.do_subsubsectioncCs|d|d|ddS)Nr_rars)rOrM)r rrrrrdo_unnumberedsubsubsec{sz$TexinfoParser.do_unnumberedsubsubseccCs|d|d|ddS)Nr_rars)rOrM)r rrrrrdo_appendixsubsubsec~sz"TexinfoParser.do_appendixsubsubseccCs|d|ddS)Nr_ra)rO)r rrrrrdo_subsubheadingszTexinfoParser.do_subsubheadingcCs|dkrxt|j|kr&|jdq W|j|dd=|j|d|j|<d}x|jD]}|t|d}qXW|d|}|j|||jf|d|d|||d|d |js|j rt d |dS) Nrr;rr:ryrrz z---) r'rHrrrGr"rrr>r?rf)r r7rrlevelxrrrrrOs    zTexinfoParser.headingcCs|dddS)NzTable of Contentsi) listcontents)r rrrrr do_contentsszTexinfoParser.do_contentscCsdS)Nr)r rrrrrdo_shortcontentsszTexinfoParser.do_shortcontentscCs|d|ddg}x|jD]\}}}||kr0q||dkr\|d|dd||n8||dkrx*||dkr|d=|d|ddqjW|d|dt|d |||d qW|dt|dS) Nz

    z

      rraz z
        z
      z
    • z )rrGrrrr')r rmaxlevelZ prevlevelsrdrPrrrrfs$       zTexinfoParser.listcontentscCsdS)Nr)r rrrrrdo_pagerzTexinfoParser.do_pagecCsdS)Nr)r rrrrrdo_needrzTexinfoParser.do_needcCsdS)Nr)r rrrrr bgn_grouprzTexinfoParser.bgn_groupcCsdS)Nr)r rrr end_grouprzTexinfoParser.end_groupcCs |jr|dn |ddS)Nr`z

      )rIr)r rrrrrdo_sps zTexinfoParser.do_spcCs|ddS)Nz


      )r)r rrrrrdo_hlineszTexinfoParser.do_hlinecCs|d||dS)Nz
      )r do_deffnx)r rrrrr bgn_deffns zTexinfoParser.bgn_deffncCs|ddS)Nz
      )r)r rrr end_deffnszTexinfoParser.end_deffncCsz|dt|d}|dd|dd\}}}|d|x|D]}|dt|qFW|d|d|dS)Nz
      r|z@b{%s}ryz
      fn)r splitwordsrmakevarindex)r rrr-categoryrrestwordrrrrps    zTexinfoParser.do_deffnxcCs|d|dS)Nz Function )rq)r rrrrr bgn_defunrzTexinfoParser.bgn_defuncCs|d|dS)Nz Function )rp)r rrrrr do_defunxrzTexinfoParser.do_defunxcCs|d|dS)NzMacro )rq)r rrrrr bgn_defmacrzTexinfoParser.bgn_defmaccCs|d|dS)NzMacro )rp)r rrrrr do_defmacxrzTexinfoParser.do_defmacxcCs|d|dS)Nz{Special Form} )rq)r rrrrr bgn_defspecrzTexinfoParser.bgn_defspeccCs|d|dS)Nz{Special Form} )rp)r rrrrr do_defspecxrzTexinfoParser.do_defspecxcCs|d||dS)Nz
      )r do_defvrx)r rrrrr bgn_defvrs zTexinfoParser.bgn_defvrcCsv|dt|d}|dd|dd\}}}|d|x|D]}|d|qFW|d|d|dS)Nz
      r|z @code{%s}ryz
      vr)rrtrrv)r rrr-rwrrxryrrrrs    zTexinfoParser.do_defvrxcCs|d|dS)Nz Variable )r)r rrrrr bgn_defvarrzTexinfoParser.bgn_defvarcCs|d|dS)Nz Variable )r)r rrrrr do_defvarxrzTexinfoParser.do_defvarxcCs|d|dS)Nz{User Option} )r)r rrrrr bgn_defoptrzTexinfoParser.bgn_defoptcCs|d|dS)Nz{User Option} )r)r rrrrr do_defoptxrzTexinfoParser.do_defoptxcCs|d||dS)Nz
      )r do_deftypefnx)r rrrrr bgn_deftypefns zTexinfoParser.bgn_deftypefncCs|dt|d}|dd|dd\}}}}|d||fx|D]}|dt|qLW|d|d|dS)Nz
      r}z@code{%s} @b{%s}ryz
      rs)rrtrrurv)r rrr-rwdatatyperrxryrrrr s     zTexinfoParser.do_deftypefnxcCs|d|dS)Nz Function )r)r rrrrrbgn_deftypefunrzTexinfoParser.bgn_deftypefuncCs|d|dS)Nz Function )r)r rrrrrdo_deftypefunxrzTexinfoParser.do_deftypefunxcCs|d||dS)Nz
      )r do_deftypevrx)r rrrrr bgn_deftypevrs zTexinfoParser.bgn_deftypevrcCs||dt|d}|dd|dd\}}}}|d||fx|D]}|d|qLW|d|d|dS)Nz
      r}z@code{%s} @b{%s}ryz
      rs)rrtrrv)r rrr-rwrrrxryrrrrs     zTexinfoParser.do_deftypevrxcCs|d|dS)Nz Variable )r)r rrrrrbgn_deftypevar*szTexinfoParser.bgn_deftypevarcCs|d|dS)Nz Variable )r)r rrrrrdo_deftypevarx-szTexinfoParser.do_deftypevarxcCs|d||dS)Nz
      )r do_defcvx)r rrrrr bgn_defcv2s zTexinfoParser.bgn_defcvcCs|dt|d}|dd|dd\}}}}|d|x|D]}|d|qHW|d|dd||fdS)Nz
      r}z@b{%s}ryz
      rz %s @r{on %s})rrtrrv)r rrr-rw classnamerrxryrrrr8s     zTexinfoParser.do_defcvxcCs|d|dS)Nz{Instance Variable} )r)r rrrrr bgn_defivarCszTexinfoParser.bgn_defivarcCs|d|dS)Nz{Instance Variable} )r)r rrrrr do_defivarxFszTexinfoParser.do_defivarxcCs|d||dS)Nz
      )r do_defopx)r rrrrr bgn_defopIs zTexinfoParser.bgn_defopcCs|dt|d}|dd|dd\}}}}|d|x|D]}|dt|qHW|d|dd||fdS)Nz
      r}z@b{%s}ryz
      rsz %s @r{on %s})rrtrrurv)r rrr-rwrrrxryrrrrOs     zTexinfoParser.do_defopxcCs|d|dS)NzMethod )r)r rrrrr bgn_defmethodYszTexinfoParser.bgn_defmethodcCs|d|dS)NzMethod )r)r rrrrr do_defmethodx\szTexinfoParser.do_defmethodxcCs|d||dS)Nz
      )r do_deftpx)r rrrrr bgn_deftpas zTexinfoParser.bgn_deftpcCsv|dt|d}|dd|dd\}}}|d|x|D]}|d|qFW|d|d|dS)Nz
      r|z@b{%s}ryz
      tp)rrtrrv)r rrr-rwrrxryrrrrgs    zTexinfoParser.do_deftpxcCsD|s |dd|jt|j<n ||_|dd|jt|j<dS)Nz
        z
      z
        z
      )rrKr'rdrN)r rrrrr bgn_enumeratess   zTexinfoParser.bgn_enumeratecCs6d|_||jt|jd|jt|jd=dS)Nr;)rNrrKr'rd)r rrr end_enumerate{szTexinfoParser.end_enumeratecCs||_|ddS)Nz
        )rMr)r rrrrr bgn_itemizeszTexinfoParser.bgn_itemizecCsd|_|ddS)Nz
      )rMr)r rrr end_itemizeszTexinfoParser.end_itemizecCs||_|ddS)Nz
      )rMr)r rrrrr bgn_tableszTexinfoParser.bgn_tablecCsd|_|ddS)Nz
      )rMr)r rrr end_tableszTexinfoParser.end_tablecCsd|_||dS)Nrs)rOr)r rrrrr bgn_ftableszTexinfoParser.bgn_ftablecCsd|_|dS)N)rOr)r rrr end_ftableszTexinfoParser.end_ftablecCsd|_||dS)Nr)rOr)r rrrrr bgn_vtableszTexinfoParser.bgn_vtablecCsd|_|dS)N)rOr)r rrr end_vtableszTexinfoParser.end_vtablecCs|jr||j||jrd|jddkrV|jdrV|jdtjkrV|jd|d}n|jd|}|jdk r|jd|}t|j|_|jr|jdd kr|d | ||d nR|jr|jdd kr|d | ||dn|d| ||ddS)Nrrr;rrryz. ratablez
      z
      Z multitablezz z
    • z ) rOrvrMrrrN incrementrdrr)r rrrrrdo_items*          zTexinfoParser.do_itemcCsd|_|ddS)Nz )rMr)r rrrrrbgn_multitableszTexinfoParser.bgn_multitablecCsd|_|ddS)Nz

      )rMr)r rrrend_multitableszTexinfoParser.end_multitablecCs d|_dS)N)rM)r rrrhandle_columnfractionssz$TexinfoParser.handle_columnfractionscCs|ddS)Nz )r)r rrr handle_tabszTexinfoParser.handle_tabcCs|ddS)Nz
      )r)r rrrrr bgn_quotationrzTexinfoParser.bgn_quotationcCs|ddS)Nz
      )r)r rrr end_quotationrzTexinfoParser.end_quotationcCs|jd|_|ddS)Nr;z
      )rIr)rrrrrrbgn_exampleszTexinfoParser.bgn_examplecCs|d|jd|_dS)Nz
      r;)rrI)r rrr end_examples zTexinfoParser.end_examplecCs||ddS)Nr`)r)r rrrrr do_exdentrzTexinfoParser.do_exdentcCs|jd|_|ddS)Nr;z
      )rIr)rrrrrr
      bgn_flushleftszTexinfoParser.bgn_flushleftcCs|d|jd|_dS)Nz
      r;)rrI)r rrr end_flushlefts zTexinfoParser.end_flushleftcCs|jd|_|ddS)Nr;z
      )rIr)r rrrrrbgn_flushrights zTexinfoParser.bgn_flushrightcCs|d|jd|_dS)Nz
      r;)rrI)r rrrend_flushrights zTexinfoParser.end_flushrightcCs"|d|d|jdS)Nz z$ Menu

      )rrD beginmenu)r rrrrrbgn_menus  zTexinfoParser.bgn_menucCs|d|jdS)Nz

      )rrDendmenu)r rrrend_menus zTexinfoParser.end_menucCsdS)Nr)r rrrrr bgn_cartoucherzTexinfoParser.bgn_cartouchecCsdS)Nr)r rrr end_cartoucherzTexinfoParser.end_cartouchecCsndg|_i|_d|jd<d|jd<d|jd<d|jd<d |jd <d |jd <i|_x|jD]}g|j|<qXWdS) NcpZConceptZFunctionrsZKeywordkyZProgrampgZTyperZVariabler)noncodeindices indextitle whichindex)r rrrrrFs       zTexinfoParser.resetindexcCs*||jkr|||ntdt|dS)Nz*** No index named)rrvrfr)r rrrrrr user_index s zTexinfoParser.user_indexcCs|d|dS)Nr)rv)r rrrrr do_cindexrzTexinfoParser.do_cindexcCs|d|dS)Nrs)rv)r rrrrr do_findexrzTexinfoParser.do_findexcCs|d|dS)Nr)rv)r rrrrr do_kindexrzTexinfoParser.do_kindexcCs|d|dS)Nr)rv)r rrrrr do_pindexrzTexinfoParser.do_pindexcCs|d|dS)Nr)rv)r rrrrr do_tindexrzTexinfoParser.do_tindexcCs|d|dS)Nr)rv)r rrrrr do_vindexrzTexinfoParser.do_vindexcCs*|j|||jf|j||jdS)N)rrr"rDrv)r rrrrrrrvszTexinfoParser.indexcCs|}t|dkr"td|dS|\}}||jks>||jkrLtd|dS||kr|j||j|k r|j|}|j||t|d<||j|<dS)Nr|z*** bad @synindexz*** bad key(s) in @synindex)rr'rfr)r rrr-oldnewZinewrrr do_synindexs      zTexinfoParser.do_synindexcCs>|}x0|D](}||jkr(||qtdt|qWdS)Nz*** No index named)rrprindexrfr)r rrr-rrrr do_printindex-s    zTexinfoParser.do_printindexcCsj||jk}|j|}|sdS|jr r;r~z
      z@code{rz
      %s z
    • )rrr>rfrrecompiler rYrzrsortrrr)r rZ iscodeindexrvZindex1Zjunkprogr8rPZsortkeyZ oldsortkeyrkrZprevkeyZprevnoderrrr5sH            zTexinfoParser.prindexcCsD|jr@tdt|j}x"|D]}t|d|j|q"WdS)Nz--- Unrecognized commands ---r&)r<rfsortedkeysljust)r Zcmdsrnrrrreport]s  zTexinfoParser.reportN(Br3r4r5r FN_ID_PATTERNr rrrrIrrSrTrUr^r\rorprrwrerrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrZ open_asisZ close_asisrrrrrrrrrrrr r r rtrrrrrrrrrrrrrrrrr r!r"r#r$r%r&r'Zopen_titlefontZclose_titlefontr(r)rir*r.r,r/Zdo_cr0r1r2r3r4r5r6r7r:r;r<r=r>r?r@rAZ do_finaloutZdo_setchapternewpageZdo_setfilenamerBrCrDrErFrGrHZdo_titleZ do_subtitleZ do_authorZdo_vskipZdo_vfillZ do_smallbookZdo_paragraphindentZ do_headingsZdo_footnotestyleZdo_evenheadingZdo_evenfootingZ do_oddheadingZ do_oddfootingZdo_everyheadingZdo_everyfootingrLr%rMrPrQrRrSrTrUrVrWrXZdo_appendixsectionrYr[r\r]r^r`rarbrcrOrgrhZdo_summarycontentsrfrjrkrlrmrnrorqrrrprzZ end_defunr{r|Z end_defmacr}r~Z end_defspecrrZ end_defvrrrZ end_defvarrrZ end_defoptrrZ end_deftypefnrrZend_deftypefunrrZ end_deftypevrrrZend_deftypevarrrZ end_defcvrrZ end_defivarrrZ end_defoprrZ end_defmethodrrZ end_deftprrrrrrrrrrrrZdo_itemxrrrrrrrrZbgn_lispZend_lispZbgn_smallexampleZend_smallexampleZ bgn_smalllispZ end_smalllispZ bgn_displayZ end_displayZ bgn_formatZ end_formatrrrrrrrrrrFrrrrrrrrvrZdo_syncodeindexrrrrrrrr9s~  ! 8  #T   &&                                                                                  (r9c@s|eZdZdZdZdedZdedZdZeZ dd Z d d Z d d Z ddZ ddZddZddZddZddZdS)TexinfoParserHTML3z©z[%(id)s]z3zz;

      z %(text)s

      z[

      Footnotes

      cCs|ddS)Nz)r)r rrrrrrsrz TexinfoParserHTML3.bgn_quotationcCs|ddS)Nz )r)r rrrrtrz TexinfoParserHTML3.end_quotationcCs|jd|_|ddS)Nr;z

      )rIr)rrrrrrrvszTexinfoParserHTML3.bgn_examplecCs|d|jd|_dS)Nz
      r;)rrI)r rrrr{s zTexinfoParserHTML3.end_examplecCs|jd|_|ddS)Nr;z
      )rIr)rrrrrrrsz TexinfoParserHTML3.bgn_flushleftcCs|jd|_|ddS)Nr;z4
      )rIr)r rrrrrrs z!TexinfoParserHTML3.bgn_flushrightcCs|d|jd|_dS)Nz
      r;)rrI)r rrrrs z!TexinfoParserHTML3.end_flushrightcCs|d|ddS)Nz )r)r rrrrszTexinfoParserHTML3.end_menuN)r3r4r5rrr rrr8rIrrrrrrrrrrrrrres  rc@seZdZdZedZddZddZddZ d d Z d d Z d dZ ddZ ddZejfddZejfddZdejfddZdejfddZddZejfddZd d!Zd"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{(.*?)}cCsR||_||_d|_d|_d|_g|_i|_i|_i|_g|_ d|_ i|_ i|_ dS)Nr) helpbaser projectfile contentfile indexfilenodelistZ nodenames nodeindexr= indexlistcurrentmenudictdumped)r rrrrrrszHTMLHelp.__init__cCsJ|||||f}||j|<t|j|j|<|j|||_g|j|j<dS)N)r=r'rrrrr)r rrr r rrPrrrrJs   zHTMLHelp.addnodecCs|j|j}||dS)N)rrr)r r"rrrrrs zHTMLHelp.menuitemcCs||j|<dS)N)r=)r Z imagenamerrrrszHTMLHelp.addimagecCs|j||fdS)N)rr)r rrr"rrrrvszHTMLHelp.indexcCsdS)Nr)r rrrrszHTMLHelp.beginmenucCsdS)Nr)r rrrrszHTMLHelp.endmenuc Cs|js dS|jd}|jd}|jd}|jd}|j}|jd\}}}} } | } yHt|d} td| dtd | dtd | dtd | dtd | dtd |d| dtd|d| dtd| d| dtd| dtd|d| dtd|d| dtd| dtd| dtd| dtd| dtd| dtd|d|d| dtd| dtd| dtd| d|| | Wn:tk r} zt|d| tdWdd} ~ XYnXyt|d} td| dtd| dtd | dtd!| dtd"| dtd#| dtd$| dtd%| dtd&| dtd'| dtd(| dtd)| dtd*| d| | td+| dtd,| d| Wn:tk r} zt|d| tdWdd} ~ XYnXyt|d} td| dtd-| dtd | dtd!| dtd"| dtd#| dtd$| dtd%| dtd.| dtd/| d| | td+| dtd,| d| Wn:tk r} zt|d| tdWdd} ~ XYnXdS)0Nz.chmz.hhpz.hhcz.hhkrrz [OPTIONS])rzAuto Index=Yesz Binary TOC=NozBinary Index=YeszCompatibility=1.1zCompiled file=rzContents file=zDefault topic=zError log file=ErrorLog.logz Index file=zTitle=zDisplay compile progress=YeszFull-text search=YeszDefault window=mainz [WINDOWS]zmain=,"z","z=","","",,,,,0x23520,222,0x1046,[10,10,780,560],0xB0000,,,,,,0z[FILES]r~r;z.z0zzzGzzzz' z2 z* z) z zzz$z$z ) rrrrf dumpfilesrrsysexit dumpnodes dumpindex)r Z resultfilerrrrrZtopnextZtopprevZtopupZtopfileZ defaulttopicrrrrrr/s                                                       zHTMLHelp.finalizecCs,t|j}x|D]}t||dqWdS)N)r)rr=rJrf)r outfileZfilelistrrrrr9s zHTMLHelp.dumpfilescCs`i|_|jr&|jd\}}}}}||_td|dx|jD]}||d|q:Wtd|ddS)Nrz
        )rz
      )rrtopnoderfdumpnode)r rr"rvrPrrrr>s  zHTMLHelp.dumpnodesrc Cs|r|\}}}}}||_||jkr&dSd|j|<td|d|dtdd|dtd|dd|dtd|dd|dtd|d y |j|} || |d |Wntk rYnXdS) Nr;ry)rzrz
    • zz)rr|z)rrrfgetnoder)r rrrZ currentnodeitemZmenunoderrrrbs    zHTMLHelp.dumpmenucCs@y|j|}|j|Stk r(dStk r:dSXdS)N)rrr IndexError)r r"rvrrrros  zHTMLHelp.getnodecCstd|dxx|jD]n\}}||}t|}|jd|}tdd|dtd|dd|dtd |dd|dtd |dqWtd |ddS) Nz
        )rrz
      • ry)rzrzzr?rTrUrrrrrSrrr^rrr/) rr>r?r2Zhtml3rDrparserrrrrrrrtests\           r__main__)rrrrrZrrgrXZkwprogrrrr8r9rrrurtrrrrrrrrrr3rrrrBsL     [ 0-  9