3 E\@s$dZddlZddlZddlZddlZddlZddlZy ddl Z WnPe k ry"ddl Z Gddde Z e e _ Wne k rdZ YnXYnXddlZddlmZmZmZmZmZddlmZddlmZddlmZmZmZmZmZGd d d ejZGd d d ejZ Gd ddej!Z"dS)z,common definitions for Docutils HTML writersNc@s eZdZdS)PILN)__name__ __module__ __qualname__rru/private/var/folders/pf/wv4htv3x0qs2c2mp0dnn0kchsvlck3/T/pip-install-emcbgzcf/docutils/docutils/writers/_html_base.pyrsr)nodesutilswriters languagesio) SafeString) writer_aux) unichar2texpick_math_environment math2html latex2mathmltex2mathml_externc@sPeZdZd&ZdZddiZddgZd'ZddZddZ dd Z d!d"Z d#d$Z d%S)(Writerhtmlxhtmlz template.txtZoutput_encoding_error_handlerxmlcharrefreplacer z html writers head_prefixhead stylesheet body_prefixbody_pre_docinfodocinfobody body_suffixtitlesubtitleheaderfootermetafragment html_prolog html_head html_title html_subtitle html_bodycCstjj|tjgS)N)r rget_transformsrZ Admonitions)selfrrrr+BszWriter.get_transformscCsN|j|j|_}|jj|x |jD]}t||t||q&W|j|_dS)N) Ztranslator_classdocumentvisitorZ walkaboutvisitor_attributessetattrgetattrapply_templateoutput)r,r.attrrrr translateEs   zWriter.translatecCs6t|jjjd}t|jd}|j|j}||S)Nrbzutf-8)openr-settingstemplatestrreadcloseinterpolation_dict)r,Z template_filer9subsrrrr2Ls zWriter.apply_templatecCsNi}|jj}x(|jD]}djt||jd||<qW|j|d<tj|d<|S)N encodingversion) r-r8r/joinr1rstripoutput_encodingdocutils __version__)r,r>r8r4rrrr=Ss   zWriter.interpolation_dictcCs6tjj|x$|jD]}djt|||j|<qWdS)Nr?)r rassemble_partsr/rCr1parts)r,partrrrrH\s  zWriter.assemble_partsN)rr)rrrrrrrrr r!r"r#r$r%r&r'r(r)r*) rrr supportedZdefault_templateZsettings_defaultsZconfig_section_dependenciesr/r+r5r2r=rHrrrrr+s rc @seZdZdZdZdZeZdZdZdZ dZ dZ d Z d Z ejd Zejd ejZd ZeddeddeddeddeddiZddZddZddZddZd d!Zejd"fd#d$Zd%d&Zdd)d*Zdd+d,Zdd.d/Zd0d1Z d2d3Z!d4d5Z"d6d7Z#d8d9Z$d:d;Z%dd?Z'd@dAZ(ddCdDZ)dddddIZ*dJdKZ+dLdMZ,dNdOZ-dPdQZ.dRdSZ/dTdUZ0dVdWZ1dXdYZ2dZd[Z3d\d]Z4d^d_Z5d`daZ6dbdcZ7dddeZ8dfdgZ9dhdiZ:djdkZ;dldmZdrdsZ?dtduZ@ejdvjAfdwdxZBdydzZCd{d|ZDd}d~ZEddZFddZGddZHddZIddZJddZKddZLddZMddZNddZOddZPddZQddZRddZSddZTddZUddZVddZWddZXdddZYddZZddZ[ddZ\ddZ]ddZ^ddZ_ddZ`ddZaddZbddZcddZdddZeddZfddÄZgddńZhddDŽZiddɄZjdd˄Zkdd̈́ZlddτZmddфZnddӄZoddՄZpddׄZqddلZrddۄZsdd݄Ztdd߄ZuddZvddZwddZxddiZyddZzddZ{ddZ|ddZ}ddZ~ddZddZddZddZddZddZddZddZddZddZddZdd Zd d ZdddddZdddZddZddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Zd9d:Zd;d<Zd=d>Zd?d@ZdAdBZdCdDZdEdFZdGdHZdIdJZdKdLZdMdNZdOdPZdQdRZdSdTZdUdVZdWdXZdYdZZd[d\Zd]d^Zd_d`ZdadbZdcddZdedfZdgdhZdidjZdkdlZdmdnZdodpZdqdrZdsdtZdudvZdwdxZdydzZd{d|Zd}d~ZddZÐddZĐddZŐddZƐddZǐddZȐddZɐddZʐddZːddZ̐ddZ͐ddZΐddZϐddZАddZѐddZҐddZӐddZԐddZՐddZ֐ddZdBS(HTMLTranslatorai Generic Docutils to HTML translator. See the `html4css1` and `html5_polyglot` writers for full featured HTML writers. .. IMPORTANT:: The `visit_*` and `depart_*` methods use a heterogeneous stack, `self.context`. When subclassing, make sure to be consistent in its use! Examples for robust coding: a) Override both `visit_*` and `depart_*` methods, don't call the parent functions. b) Extend both and unconditionally call the parent functions:: def visit_example(self, node): if foo: self.body.append('
') html4css1.HTMLTranslator.visit_example(self, node) def depart_example(self, node): html4css1.HTMLTranslator.depart_example(self, node) if foo: self.body.append('
') c) Extend both, calling the parent functions under the same conditions:: def visit_example(self, node): if foo: self.body.append('
') else: # call the parent method _html_base.HTMLTranslator.visit_example(self, node) def depart_example(self, node): if foo: self.body.append('
') else: # call the parent method _html_base.HTMLTranslator.depart_example(self, node) d) Extend one method (call the parent), but don't otherwise use the `self.context` stack:: def depart_example(self, node): _html_base.HTMLTranslator.depart_example(self, node) if foo: # implementation-specific code # that does not use `self.context` self.body.append(' ') This way, changes in stack use will not bite you. z% z zW z zR z2 z-file:/usr/share/javascript/mathjax/MathJax.jsz4 z% z \S+| +|\nz.+\W\W.+|[-?].+lang&z&z>@z@cstjj||j_}|j}tj||j_j t j g_ g_ g_|jrtj jj|jjjjj dd_fddtj|D_dg_g_g_g_g_dg_d_t|j_|jj _jdd_!jdj"_g_#g_$g_%d_&d_'d_(d_)d_*d_+g_,g_-g_.g_/j0g_1g_2g_3g_4d_5d_6d_7g_8dS) Ncsg|]}j|qSr)stylesheet_call).0path)r,rr sz+HTMLTranslator.__init__..z z rTF)9r NodeVisitor__init__r8 language_coder Z get_languagereporterlanguage generatorrFrGr$rr&xml_declarationappendrErr Zget_stylesheet_listrrrrrr%r section_levelintinitial_header_level math_outputsplitmath_output_optionslowercontext topic_classescolspecs compact_pcompact_simpleZcompact_field_listZ in_docinfo in_sidebarin_footnote_listr r!r"r# content_typer'r(r)r*in_document_title in_mailtoZauthor_in_authors math_header)r,r-r8Zlcoder)r,rrYs\       zHTMLTranslator.__init__cCs6dj|j|j|j|j|j|j|j|jS)Nr?) rCrrrrrrrr)r,rrrastextszHTMLTranslator.astextcCst|}|j|jS)z-Encode special characters in `text` & return.)r:r5special_characters)r,textrrrencode szHTMLTranslator.encodecCs |jddS)z*Try to hide a mailto: URL from harvesters.rRz%40)replace)r,urirrr cloak_mailtoszHTMLTranslator.cloak_mailtocCs|jdd}|jdd}|S)z;Try to hide the link text of a email link from harversters.z@z@.z.)rv)r,addrrrr cloak_emails  zHTMLTranslator.cloak_emailz[ ]cCs<|j|jd|}|jr8|jjr8|jdd}|jdd}|S)z6Cleanse, HTML encode, and return attribute value text. z%40z%40ryz.)rusubrpr8cloak_email_addressesrv)r,rt whitespaceencodedrrrattval s   zHTMLTranslator.attvalcCs|jjr|y$tj|ddj}|jjj|WnDtk rp}z(d|t|j f}|j j j |d|Sd}~XnX|j |S|jjrtj|jj|}|j|j|S)z8Return code to reference or embed stylesheet file `path`zutf-8) source_pathrAz!Cannot embed stylesheet '%s': %s.z <--- %s ---> N)r8Zembed_stylesheetr Z FileInputr;record_dependenciesaddIOErrorr strerrorr-r[errorembedded_stylesheetZstylesheet_pathr Z relative_pathZ _destinationstylesheet_linkru)r,rUcontenterrmsgrrrrS*s  zHTMLTranslator.stylesheet_callr@Fc Ks<|j}g}i}g}x$t|jD]\} } | || j<q"Wg} g} x\|jdg|jddjD]<} | jdr| j| ddq`| jr`| | kr`| j| q`W| r| d||j <| rdj | |d<d |kst |j |jd gd |kr|j |d |d =|rr|d|d <x`|d dD]P}|sPt |tjtjtjtjtjtjtjfr`|jd |n |d |7}qWt|j}|j|g}x~|D]v\} } | dk st t | trd d| D}|jd| j|jdj |fn |jd| j|jt| fqW|rd}nd}dj |ddj ||f|S)z Construct and return a start tag given a node (id & class attributes are extracted), tag name, and optional attributes. classesclassr?z language- Nrr|ididsrWzcSsg|] }t|qSr)r:)rTvrrrrVusz+HTMLTranslator.starttag..z%s="%s"z /z<%s%s>)rflistitemsgetpoprd startswithr_striplang_attributerCAssertionErrorextend isinstancer bullet_listrdefinition_listenumerated_list field_list option_listtablesortrr:)r,nodetagnamesuffixempty attributesprefixattsrnamevaluerr clsrattlistrIvaluesZinfixrrrstarttag=s^"         zHTMLTranslator.starttagcKs|j|||fddi|S)z1Construct and return an XML-compatible empty tag.rT)r)r,rrrrrrremptytagszHTMLTranslator.emptytagrc CsBdd|D}y ||}Wntk r.dSX|dj|dS)z Set class `class_` on the visible child no. index of `node`. Do nothing if node has fewer children than `index`. cSsg|]}t|tjs|qSr)rr Invisible)rTnrrrrVsz5HTMLTranslator.set_class_on_child..Nr) IndexErrorr_)r,rclass_indexchildrenchildrrrset_class_on_childs  z!HTMLTranslator.set_class_on_childcCs:|j}|j|}|jr*|jjr*|j|}|jj|dS)N)rrrurpr8r~r{rr_)r,rrtrrrr visit_Texts   zHTMLTranslator.visit_TextcCsdS)Nr)r,rrrr depart_TextszHTMLTranslator.depart_TextcCs|jj|j|dddS)NZabbrr?)rr_r)r,rrrrvisit_abbreviationsz!HTMLTranslator.visit_abbreviationcCs|jjddS)Nz)rr_)r,rrrrdepart_abbreviationsz"HTMLTranslator.depart_abbreviationcCs|jj|j|dddS)NZacronymr?)rr_r)r,rrrr visit_acronymszHTMLTranslator.visit_acronymcCs|jjddS)Nz )rr_)r,rrrrdepart_acronymszHTMLTranslator.depart_acronymcCs.|j|ddd|jj|j|dddddS)NaddressF)r$prer?)rCLASS)visit_docinfo_itemrr_r)r,rrrr visit_addressszHTMLTranslator.visit_addresscCs|jjd|jdS)Nz )rr_depart_docinfo_item)r,rrrrdepart_addresss zHTMLTranslator.depart_addresscCs(|djdd|jj|j|ddS)NrrZ admonitiondiv)insertrr_r)r,rrrrvisit_admonitionszHTMLTranslator.visit_admonitionNcCs|jjddS)Nz )rr_)r,rrrrdepart_admonitionsz HTMLTranslator.depart_admonition—r?())ZdashZ parenthesesparensnonecCs<|j|jj\}}|jj||jj|j|d|dddS)Np attribution)r)attribution_formatsr8rrgr_rr)r,rrrrrrvisit_attributions z HTMLTranslator.visit_attributioncCs|jj|jjddS)Nz

)rr_rgr)r,rrrrdepart_attributionsz!HTMLTranslator.depart_attributioncCs*t|jtjs|j|d|jjddS)Nauthorz

)rparentrauthorsrrr_)r,rrrr visit_authors zHTMLTranslator.visit_authorcCs4|jjdt|jtjr(|jjdn|jdS)Nz

r@)rr_rrrrr)r,rrrr depart_authors zHTMLTranslator.depart_authorcCs|j|ddS)Nr)r)r,rrrr visit_authorsszHTMLTranslator.visit_authorscCs |jdS)N)r)r,rrrrdepart_authorsszHTMLTranslator.depart_authorscCs|jj|j|ddS)N blockquote)rr_r)r,rrrrvisit_block_quotesz HTMLTranslator.visit_block_quotecCs|jjddS)Nz )rr_)r,rrrrdepart_block_quotesz!HTMLTranslator.depart_block_quotec Cs8t|j}y|j|Wntjk r.dSXdSdS)z7Check for a simple list that can be rendered compactly.FTN)SimpleListCheckerr-walkr NodeFound)r,rr.rrrcheck_simple_lists  z HTMLTranslator.check_simple_listcCszd|dkrdSd|dkr dSt|tjtjfr@|jj r@dSt|tjtjfr`|jj r`dS|j dgkrpdS|j |S)NcompactrTr7Fcontents) rrrrr8Zcompact_field_listsrrZ compact_listsrhr)r,rrrris_compactables     zHTMLTranslator.is_compactablecCs`i}|j}|jj|j|jfd|_|j||_|jrD| rDd|d<|jj|j|df|dS)Nsimplerul)rkrgr_rjrrr)r,rrZold_compact_simplerrrvisit_bullet_lists  z HTMLTranslator.visit_bullet_listcCs"|jj\|_|_|jjddS)Nz )rgrrkrjrr_)r,rrrrdepart_bullet_listsz!HTMLTranslator.depart_bullet_listcCs|jj|j|dddddS)Nrr?caption)r)rr_r)r,rrrr visit_captionszHTMLTranslator.visit_captioncCs|jjddS)Nz

)rr_)r,rrrrdepart_captionszHTMLTranslator.depart_captioncCs|js|jjdd|_dS)Nz
T)rmrr_)r,rrrrvisit_citations zHTMLTranslator.visit_citationcCs8|jjdt|jdddtjs4|jjdd|_dS)Nz FT)descendsiblingsz
)rr_r next_noderZcitationrm)r,rrrrdepart_citation$s   zHTMLTranslator.depart_citationcCsVd}d|kr||d7}nd|kr6||jj|d7}|jj|j|ddd|ddS)N#refidrefnamea[zcitation-reference)rhref)r-Znameidsrr_r)r,rrrrrvisit_citation_reference+s z'HTMLTranslator.visit_citation_referencecCs|jjddS)Nz])rr_)r,rrrrdepart_citation_reference6sz(HTMLTranslator.depart_citation_referencecCs|jj|j|dddddS)Nspanr? classifier)r)rr_r)r,rrrrvisit_classifier=szHTMLTranslator.visit_classifiercCs|jjddS)Nz)rr_)r,rrrrdepart_classifier@sz HTMLTranslator.depart_classifiercCs&|jj||jjj|jjddS)Nstub)rir_rstubsrr)r,rrrr visit_colspecCs zHTMLTranslator.visit_colspeccCst|jdddtjrdSd|jjdksFd|jjkrJd|jjdkrJdStdd|jD}|j j |j |d xB|jD]8}t |d d |d }|j j |j |d d|dqzW|j j ddS)NFT)rrzcolwidths-autorzcolwidths-givencss|]}|dVqdS)colwidthNr)rTrrrr Qsz0HTMLTranslator.depart_colspec..colgrouprgY@g?colz width: %i%%)stylez )rrrZcolspecrr8 table_stylesumrirr_rrar)r,rZ total_widthrrrrdepart_colspecHs  zHTMLTranslator.depart_colspecz-(?=-)cCs$|jjd|d|jtjdS)z%Escape double-dashes in comment text.z z- N)rr_rrrSkipNode)r,rr}rrr visit_commentYszHTMLTranslator.visit_commentcCsp|jj|j|dddt|dkrl|ddjd|d djdx"|dd D]}|djd qVWdS) NrZcompound)rrWrrzcompound-firstz compound-lastzcompound-middler )rr_rlen)r,rrrrrvisit_compound`s  zHTMLTranslator.visit_compoundcCs|jjddS)Nz )rr_)r,rrrrdepart_compoundhszHTMLTranslator.depart_compoundcCs|jj|j|ddddS)Nrzdocutils container)r)rr_r)r,rrrrvisit_containerkszHTMLTranslator.visit_containercCs|jjddS)Nz )rr_)r,rrrrdepart_containernszHTMLTranslator.depart_containercCs|j|ddddS)NcontactF)r$)r)r,rrrr visit_contactqszHTMLTranslator.visit_contactcCs |jdS)N)r)r,rrrrdepart_contacttszHTMLTranslator.depart_contactcCs|j|ddS)N copyright)r)r,rrrrvisit_copyrightwszHTMLTranslator.visit_copyrightcCs |jdS)N)r)r,rrrrdepart_copyrightzszHTMLTranslator.depart_copyrightcCs|j|ddS)Ndate)r)r,rrrr visit_date}szHTMLTranslator.visit_datecCs |jdS)N)r)r,rrrr depart_dateszHTMLTranslator.depart_datecCsdS)Nr)r,rrrrvisit_decorationszHTMLTranslator.visit_decorationcCsdS)Nr)r,rrrrdepart_decorationsz HTMLTranslator.depart_decorationcCs&|jjd|jj|j|dddS)Nz ddr?)rr_r)r,rrrrvisit_definitions zHTMLTranslator.visit_definitioncCs|jjddS)Nz )rr_)r,rrrrdepart_definitionsz HTMLTranslator.depart_definitioncCs8|jdg}|j|r |jd|jj|j|ddS)Nrrdl) setdefaultrr_rr)r,rrrrrvisit_definition_lists   z$HTMLTranslator.visit_definition_listcCs|jjddS)Nz )rr_)r,rrrrdepart_definition_listsz%HTMLTranslator.depart_definition_listcCs||jdg|jdjdg|jdd<|jdg|jdjdg|jdd<|jdg|jdjdg|jdd<dS)Nrrrnames)rr)r,rrrrvisit_definition_list_items((z)HTMLTranslator.visit_definition_list_itemcCsdS)Nr)r,rrrrdepart_definition_list_itemsz*HTMLTranslator.depart_definition_list_itemcCs|jj|j|dddS)Nrr?)rr_r)r,rrrrvisit_descriptionsz HTMLTranslator.visit_descriptioncCs|jjddS)Nz )rr_)r,rrrrdepart_descriptionsz!HTMLTranslator.depart_descriptioncCs2d}|j|r|d7}|jj|j|d|ddS)Nrz simpler)r)rrr_r)r,rrrrr visit_docinfos zHTMLTranslator.visit_docinfocCs|jjddS)Nz )rr_)r,rrrrdepart_docinfoszHTMLTranslator.depart_docinfoTcCs^|r$d||j|jf}|j||jjd||jj|f|jj|j|dd|ddS)Nz z
%s
rr?)r)rrradd_metarr_r\labelsr)r,rrr$Zmeta_tagrrrrs z!HTMLTranslator.visit_docinfo_itemcCs|jjddS)Nz )rr_)r,rrrrsz"HTMLTranslator.depart_docinfo_itemcCs|jj|j|dddddS)Nrr?zcode python doctest)rr)rr_r)r,rrrrvisit_doctest_blocksz"HTMLTranslator.visit_doctest_blockcCs|jjddS)Nz )rr_)r,rrrrdepart_doctest_blocksz#HTMLTranslator.depart_doctest_blockcCs:|jddptjj|dpd}|jjd|j|dS)Nr r?sourcezdocutils document without titlez%s )rosrUbasenamerr_ru)r,rr rrrvisit_documentszHTMLTranslator.visit_documentcCs,|jj|j|jd|jjig|jj|j|jj d|j |jj |j j d|j |jj |j r|jdkr~|j j|j n|jj|j |jj|j dd|jj|j|ddd|jj dd|jj|j|jj|jdd|j|j|j|jdd |j s(td t|jdS) NrMrmathjaxrWrr-)rz zlen(context) = %sr )rrdoctypehead_prefix_templater8rZr&r_r$rrnrErrqrcrr'rrrr%rr*rrrgrr )r,rrrrdepart_documents"  0zHTMLTranslator.depart_documentcCs|jj|j|dddS)Nemr?)rr_r)r,rrrrvisit_emphasisszHTMLTranslator.visit_emphasiscCs|jjddS)Nz)rr_)r,rrrrdepart_emphasisszHTMLTranslator.depart_emphasiscCsdgi}t|jjtjr&|djd|jjjj|jjrH|djd|drhd}dj|d|d<n d}|d=|jjd7_d|kr|dd|d <d |kr|d d|d <|jj|d 7_|jj|j ||d f||j jd |j dS)Nrrrthr|tdrWZmorerowsZrowspanZmorecolsZcolspanr?z ) rrrtheadr_rcolumnrCrrrgrf)r,rrrrrr visit_entrys$zHTMLTranslator.visit_entrycCs|jj|jjdS)N)rr_rgr)r,rrrr depart_entryszHTMLTranslator.depart_entrycCsji}d|kr|d|d<d|kr,|d|d<|j|rN|jdddj|d<|jj|j|df|dS)NstartZenumtyperr?z simpleol)rrrrr_r)r,rrrrrvisit_enumerated_lists   z$HTMLTranslator.visit_enumerated_listcCs|jjddS)Nz )rr_)r,rrrrdepart_enumerated_listsz%HTMLTranslator.depart_enumerated_listcCs2d}|j|r|d7}|jj|j|d|ddS)Nz field-listz simpler)r)rrr_r)r,rrrrrvisit_field_lists zHTMLTranslator.visit_field_listcCs|jjddS)Nz )rr_)r,rrrrdepart_field_listsz HTMLTranslator.depart_field_listcCsdS)Nr)r,rrrr visit_fieldszHTMLTranslator.visit_fieldcCsdS)Nr)r,rrrr depart_fieldszHTMLTranslator.depart_fieldcCs*|jj|j|dddj|jdddS)Ndtr?r)r)rr_rrCr)r,rrrrvisit_field_name$szHTMLTranslator.visit_field_namecCs|jjddS)Nz )rr_)r,rrrrdepart_field_name(sz HTMLTranslator.depart_field_namecCs<|jj|j|dddj|jdd|js8|jjddS)Nrr?r)rz

)rr_rrCrr)r,rrrrvisit_field_body+szHTMLTranslator.visit_field_bodycCs|jjddS)Nz )rr_)r,rrrrdepart_field_body2sz HTMLTranslator.depart_field_bodycCs`ddi}|jdr"d|d|d<|jdrD|dd|d7<|jj|j|df|dS) Nrfigurewidthz width: %sralignz align-r)rrr_r)r,rrrrr visit_figure5s   zHTMLTranslator.visit_figurecCs|jjddS)Nz )rr_)r,rrrr depart_figure=szHTMLTranslator.depart_figurecCs|jjt|jdS)N)rgr_r r)r,rrrr visit_footerAszHTMLTranslator.visit_footercCsf|jj}|j|ddddg}|j|j|d|jd|jj|||jdd<|j|d=dS)Nrr#)rz z r)rgrrrrr_r#r)r,rr?r#rrr depart_footerDs   zHTMLTranslator.depart_footercCs,|js(d|jj}|jjd|d|_dS)Nz footnote z
T)rmr8footnote_referencesrr_)r,rrrrrvisit_footnoteSs zHTMLTranslator.visit_footnotecCs8|jjdt|jdddtjs4|jjdd|_dS)Nz FT)rrz
)rr_rrrfootnoterm)r,rrrrdepart_footnoteYs   zHTMLTranslator.depart_footnotecCs8d|d}d|jj}|jj|j|dd||ddS)Nrrzfootnote-reference rr?)rr)r8rSrr_r)r,rrrrrrvisit_footnote_reference`s  z'HTMLTranslator.visit_footnote_referencecCs|jjddS)Nz)rr_)r,rrrrdepart_footnote_referencefsz(HTMLTranslator.depart_footnote_referencecCs:d|dkr6|jjd}|jjd|j|tjdS)Nsectnumr z %s )rrrDrr_rurr )r,rrYrrrvisit_generatedjs  zHTMLTranslator.visit_generatedcCsdS)Nr)r,rrrrdepart_generatedtszHTMLTranslator.depart_generatedcCs|jjt|jdS)N)rgr_r r)r,rrrr visit_headerwszHTMLTranslator.visit_headercCsb|jj}|j|dddg}|j|j|d|jd|jj||jj||j|d=dS)Nrr")rz
)rgrrrrr_rr")r,rr?r"rrr depart_headerzs    zHTMLTranslator.depart_headerz.swfzapplication/x-shockwave-flashc Csi}|d}tjj|dj}||jkrB||d<|j||d<n||d<|jd||d<d|krn|d|d<d|kr|d|d<d |krtod|kod|k o|jjrimg)rMrb)rMrb)&r/rUsplitextrfobject_image_typesrrr8Zfile_insertion_enabledurllibrequest url2pathnameImager7rusysgetfilesystemencodingrUnicodeEncodeErrorrrrvsizerematchrfloatgroupr_rCrrr TextElement referencerrr) r,rrrwextZ imagepathrhZatt_namertrrrrr visit_imagesn                *zHTMLTranslator.visit_imagecCsdS)Nr)r,rrrr depart_imageszHTMLTranslator.depart_imagecCs|jj|j|dddS)Nrr?)rr_r)r,rrrr visit_inlineszHTMLTranslator.visit_inlinecCs|jjddS)Nz)rr_)r,rrrr depart_inlineszHTMLTranslator.depart_inlinecCst|jtjr|jj}nd}|jj|j|jdddd|jj|j|dd|d|jj r|jd}t |dkr|jjd |d dS) NZbracketsrGr?label)rrbackrefsrWz!r) rrrrUr8rSrr_rfootnote_backlinksr )r,rrrrrr visit_labels   zHTMLTranslator.visit_labelcCs|jjr*|jd}t|dkr*|jjd|jjd|jjrrt|dkrrddt|D}|jjddj||jjd dS) NrrWzzcSs g|]\}}d||dfqS)z%srWr)rTirefrrrrVsz/HTMLTranslator.depart_label..z$(%s),z
)r8rrr rr_ enumeraterC)r,rr backlinksrrr depart_labels     zHTMLTranslator.depart_labelcCs|jj|j|ddddS)NrZlegend)r)rr_r)r,rrrr visit_legendszHTMLTranslator.visit_legendcCs|jjddS)Nz )rr_)r,rrrr depart_legendszHTMLTranslator.depart_legendcCs2|jj|j|ddddt|s.|jjddS)Nrr?line)rrz
)rr_rr )r,rrrr visit_lineszHTMLTranslator.visit_linecCs|jjddS)Nz )rr_)r,rrrr depart_lineszHTMLTranslator.depart_linecCs|jj|j|ddddS)Nrz line-block)r)rr_r)r,rrrrvisit_line_blockszHTMLTranslator.visit_line_blockcCs|jjddS)Nz )rr_)r,rrrrdepart_line_blocksz HTMLTranslator.depart_line_blockcCs|jj|j|dddS)Nlir?)rr_r)r,rrrrvisit_list_itemszHTMLTranslator.visit_list_itemcCs|jjddS)Nz )rr_)r,rrrrdepart_list_itemszHTMLTranslator.depart_list_itemcCs|jdg}d|kr@dd|D|d<|jj|j|dddS|jj|j|dddd|j}t|jtjs||j d d }xR|j j |D]B}|j r|j j|r|jjd |j|q|jj|j|qW|jjd tjdS) NrcodecSsg|]}|dkr|qS)rr)rTrrrrrVsz0HTMLTranslator.visit_literal..r?rzdocutils literal)rr@r|z%sz)rrr_rrrrrrZ literal_blockrvwords_and_spacesfindallrin_word_wrap_pointsearchrur )r,rrrttokenrrr visit_literal s"   zHTMLTranslator.visit_literalcCs|jjddS)Nz)rr_)r,rrrrdepart_literal$szHTMLTranslator.depart_literalcCs:|jj|j|ddddd|jdgkr6|jjddS)Nrr?z literal-block)rrrz)rr_rr)r,rrrrvisit_literal_block(sz"HTMLTranslator.visit_literal_blockcCs,d|jdgkr|jjd|jjddS)Nrrzz )rrr_)r,rrrrdepart_literal_block-s z#HTMLTranslator.depart_literal_blockrrformulamathrtt)mathmlrr2latexc sjjkr&jjjdjd_jj|dk}jjd}d&d'd(d)d}|j|dk}jd krj sjd d krd}|jjtj }|ry||||f}Wnt k r||}YnXjd*krj |}jd kr`j r`yjd _ Wn$tk r0jjjd YnXdj krLj d7_ jj g_ njdkrjrj rfddjd jdD_ |dktj_tj|}njd krLdjkrj_j_djjj}y|dkrtj|jj}nd|dkr*tj|jj}nH|d krLtj|| jjd}n&|sdtj || d}njjjdWnt!k rt!dYnt"k rJ} zjjj| |d} j#| j$j%j&|dj$j%dj| j'j$j%dj$j%j&|dd d!j$j%j |j$j%d"j(| t)j*WYdd} ~ XnX|rtj$j%j&||d#t+||d$j$j%||rj$j%d#|rj$j%d%||rj$j%d#t)j*dS)+Nz=math-output format "%s" not supported falling back to "latex"rr?rf$%s$\begin{%s} %s \end{%s}\(%s\))rrr2rrr blahtexmlr2z@No MathJax URL specified, using local fallback (see config.html)?z?config=TeX-AMS_CHTMLrcs"g|]}jtj|jjqSr)rSr Zfind_file_in_dirsr8Zstylesheet_dirs)rTs)r,rrrVjsz-HTMLTranslator.visit_math..rzXHTML 1r|latexmlttm)inliner[)rz3option "%s" not supported with math-output "MathML"zis "latexmlmath" in your PATH?)Z base_noderz

rz literal-block)rz r@)rrz)rr)rr)rr)NN)rr2),rc math_tagsr-r[rrerrr5rZ uni2tex_table TypeErrorrurq mathjax_urlrwarningmathjax_scriptrdrZDocumentParametersZ displaymoder3doctype_mathmlZcontent_type_mathmlrnrCrfrrrrrZ tex2mathmlOSError SyntaxErrorvisit_system_messagerr_rargsdepart_system_messagerr bool) r,rmath_envtagZclsargwrapperswrapperZ math_code converterrZerr_noder)r,r visit_math>s                           zHTMLTranslator.visit_mathcCsdS)Nr)r,rrrr depart_mathszHTMLTranslator.depart_mathcCst|j}|j||ddS)N)r)rrrr)r,rrrrrvisit_math_blocks zHTMLTranslator.visit_math_blockcCsdS)Nr)r,rrrrdepart_math_blocksz HTMLTranslator.depart_math_blockcCs"|j|df|j}|j|dS)Nr$)rZnon_default_attributesr*)r,rr$rrr visit_metaszHTMLTranslator.visit_metacCsdS)Nr)r,rrrr depart_metaszHTMLTranslator.depart_metacCs|jj||jj|dS)N)r$r_r)r,rrrrr*s zHTMLTranslator.add_metacCs|jj|j|dddddS)Nrr?option)r)rr_r)r,rrrr visit_optionszHTMLTranslator.visit_optioncCs2|jjdt|jdddtjr.|jjddS)NzFT)rrz, )rr_rrrr)r,rrrr depart_options zHTMLTranslator.depart_optioncCs.|jj|jdd|jj|j|dddS)N delimiterr|varr?)rr_rr)r,rrrrvisit_option_argumentsz$HTMLTranslator.visit_option_argumentcCs|jjddS)Nz)rr_)r,rrrrdepart_option_argumentsz%HTMLTranslator.depart_option_argumentcCs&|jj|j|dd|jjddS)NrGr?z)rr_r)r,rrrrvisit_option_groupsz!HTMLTranslator.visit_option_groupcCs|jjddS)Nz )rr_)r,rrrrdepart_option_groupsz"HTMLTranslator.depart_option_groupcCs|jj|j|ddddS)Nrz option-list)r)rr_r)r,rrrrvisit_option_listsz HTMLTranslator.visit_option_listcCs|jjddS)Nz )rr_)r,rrrrdepart_option_listsz!HTMLTranslator.depart_option_listcCsdS)Nr)r,rrrrvisit_option_list_itemsz%HTMLTranslator.visit_option_list_itemcCsdS)Nr)r,rrrrdepart_option_list_itemsz&HTMLTranslator.depart_option_list_itemcCsdS)Nr)r,rrrrvisit_option_stringsz"HTMLTranslator.visit_option_stringcCsdS)Nr)r,rrrrdepart_option_stringsz#HTMLTranslator.depart_option_stringcCs|j|ddS)NZ organization)r)r,rrrrvisit_organizationsz!HTMLTranslator.visit_organizationcCs |jdS)N)r)r,rrrrdepart_organizationsz"HTMLTranslator.depart_organizationcCs|jj|j|dddS)Nrr?)rr_r)r,rrrrvisit_paragraphszHTMLTranslator.visit_paragraphcCs>|jjdt|jtjtjfo,t|jdks:|jjddS)Nz

rWr@)rr_rrrZ list_itementryr )r,rrrrdepart_paragraphs zHTMLTranslator.depart_paragraphcCsV|jdr,|jjd|d|jjdn |jjd|jj|j|dddddS)Nrzzr?rZ problematic)r)hasattrrr_rgr)r,rrrrvisit_problematics   z HTMLTranslator.visit_problematiccCs"|jjd|jj|jjdS)Nz)rr_rgr)r,rrrrdepart_problematic s z!HTMLTranslator.depart_problematiccCs|d|jddjkrrt|jtjr&dp(d}|drJ|jj|j||dd|jj|j |drr|jjd|tj dS) Nrformatr?rrr)rz) rrdrrrrwrr_rrrr )r,rtrrr visit_rawszHTMLTranslator.visit_rawcCsddi}d|kr\|d|d<|jjrJ|djdrJ|j|d|d<d|_|dd7<n0d|ksltd d |d|d<|dd 7<t|jtj st |d krt|d tj st|dd7<|j j |j|ddf|dS)Nrrxrefurirzmailto:Tz externalrz3References must have "refuri" or "refid" attribute.rz internalrWrz image-referencerr?)r8r~rrxrprrrrrwr imagerr_r)r,rrrrrvisit_references    zHTMLTranslator.visit_referencecCs0|jjdt|jtjs&|jjdd|_dS)Nzr@F)rr_rrrrwrp)r,rrrrdepart_reference-s  zHTMLTranslator.depart_referencecCs|j|ddddS)NrevisionF)r$)r)r,rrrrvisit_revision3szHTMLTranslator.visit_revisioncCs |jdS)N)r)r,rrrrdepart_revision6szHTMLTranslator.depart_revisioncCs |jj|j|ddd|_dS)Ntrr?r)rr_rr<)r,rrrr visit_row9szHTMLTranslator.visit_rowcCs|jjddS)Nz )rr_)r,rrrr depart_row=szHTMLTranslator.depart_rowcCs|jj|j|dddddS)Nrr?Zrubric)r)rr_r)r,rrrr visit_rubric@szHTMLTranslator.visit_rubriccCs|jjddS)Nz

)rr_)r,rrrr depart_rubricCszHTMLTranslator.depart_rubriccCs*|jd7_|jj|j|ddddS)NrWrsection)r)r`rr_r)r,rrrr visit_sectionGszHTMLTranslator.visit_sectioncCs|jd8_|jjddS)NrWz )r`rr_)r,rrrrdepart_sectionLszHTMLTranslator.depart_sectioncCs"|jj|j|dddd|_dS)Nrsidebar)rT)rr_rrl)r,rrrr visit_sidebarQszHTMLTranslator.visit_sidebarcCs|jjdd|_dS)Nz F)rr_rl)r,rrrrdepart_sidebarVs zHTMLTranslator.depart_sidebarcCs|j|ddddS)NstatusF)r$)r)r,rrrr visit_statusZszHTMLTranslator.visit_statuscCs |jdS)N)r)r,rrrr depart_status]szHTMLTranslator.depart_statuscCs|jj|j|dddS)Nstrongr?)rr_r)r,rrrr visit_strong`szHTMLTranslator.visit_strongcCs|jjddS)Nz )rr_)r,rrrr depart_strongcszHTMLTranslator.depart_strongcCs|jj|j|dddS)Nr}r?)rr_r)r,rrrrvisit_subscriptfszHTMLTranslator.visit_subscriptcCs|jjddS)Nz)rr_)r,rrrrdepart_subscriptiszHTMLTranslator.depart_subscriptcCs tjdS)zInternal only.N)rr )r,rrrrvisit_substitution_definitionlsz,HTMLTranslator.visit_substitution_definitioncCs|j|dS)N)unimplemented_visit)r,rrrrvisit_substitution_referencepsz+HTMLTranslator.visit_substitution_referencecCsdt|jtjrd}n2t|jtjr4d}t|j|_nt|jtjrFd}|jj |j |dd|ddS)Nzsidebar-subtitler!zsection-subtitlerr?)r) rrrrr-r rrorr_r)r,rrrrrvisit_subtitlewszHTMLTranslator.visit_subtitlecCsV|jjd|jrR|j|jd|_d|_|jj|j|jj|j|jdd=dS)Nz

rWrr )rr_ror!rrr))r,rrrrdepart_subtitles zHTMLTranslator.depart_subtitlecCs|jj|j|dddS)Nsupr?)rr_r)r,rrrrvisit_superscriptsz HTMLTranslator.visit_superscriptcCs|jjddS)Nz)rr_)r,rrrrdepart_superscriptsz!HTMLTranslator.depart_superscriptcCs|jj|j|ddd|jjdd}t|dr|d}t|dkrVd|d }n>d}g}x&|D]}|jd ||f|d7}qdWd d j|}|jd rd|d }nd}|jjd|d|d|j|d||fdS)Nrzsystem-message)rz

r?rrWz%; backlinkrz%sz; backlinks: %sz, rz , line %szISystem Message: %s/%s (%s%s)%s

r`levelr.)rr_rr rCrru)r,rZ backref_textrrrZbackrefrrrrrs*         z#HTMLTranslator.visit_system_messagecCs|jjddS)Nz )rr_)r,rrrrrsz$HTMLTranslator.depart_system_messagecCsXdd|jjjdD}d|kr2|jd|d|j|ddj|d}|jj|dS) NcSsg|]}|jdqS)z )r)rTrrrrrVsz.HTMLTranslator.visit_table..rrNzalign-%srr|)r)r8rrdr_rrCr)r,rrrrrr visit_tables zHTMLTranslator.visit_tablecCs|jjddS)Nz )rr_)r,rrrr depart_tableszHTMLTranslator.depart_tablecCsPd|kpd|kpd|ks@|jj|j|dddd|jjdn |jjddS) Nrrrrr?target)rz)rr_rrg)r,rrrr visit_targets zHTMLTranslator.visit_targetcCs|jj|jjdS)N)rr_rgr)r,rrrr depart_targetszHTMLTranslator.depart_targetcCs|jj|j|ddS)Ntbody)rr_r)r,rrrr visit_tbodyszHTMLTranslator.visit_tbodycCs|jjddS)Nz )rr_)r,rrrr depart_tbodyszHTMLTranslator.depart_tbodycCs|jj|j|dddS)NrGr?)rr_r)r,rrrr visit_termszHTMLTranslator.visit_termcCsdS)zg Leave the end tag to `self.visit_definition()`, in case there's a classifier. Nr)r,rrrr depart_termszHTMLTranslator.depart_termcCsg|_g|_dS)N)rir)r,rrrr visit_tgroupszHTMLTranslator.visit_tgroupcCsdS)Nr)r,rrrr depart_tgroupszHTMLTranslator.depart_tgroupcCs|jj|j|ddS)Nr;)rr_r)r,rrrr visit_theadszHTMLTranslator.visit_theadcCs|jjddS)Nz )rr_)r,rrrr depart_theadszHTMLTranslator.depart_theadcCsd}d}t|jtjr4|jj|j|ddddnt|jtjr`|jj|j|ddddn^t|jtjr|jj|j|ddddn2t|jtj r|jj|j|d dd }nt|jtj r|jj|j|d dd dd }t |j|_ nt|jtj st|j|jd}i}t |jdkrFt|jdtjrFd|d<|jj|j|d|df|i}|jdrd|d<d|d|d<|r|jj|jiddf|d|}nd|}|jj|dS)z,Only 6 section levels are supported by HTML.rz

rr?ztopic-title first)rz sidebar-titlezadmonition-titlerz h1r z rWrfz with-subtitlerzh%srz toc-backrefrrrrz z N)rrrtopicrr_rrZ Admonitionrr-r rorrr`rbr!rrg)r,rZcheck_idZ close_tagZh_levelrrrr visit_titlesH  zHTMLTranslator.visit_titlecCs\|jj|jj|jrX|j|jd|_d|_|jj|j|jj|j|jdd=dS)NrWrr ) rr_rgrror rrr()r,rrrr depart_titleszHTMLTranslator.depart_titlecCs|jj|j|dddS)NZciter?)rr_r)r,rrrrvisit_title_referencesz$HTMLTranslator.visit_title_referencecCs|jjddS)Nz)rr_)r,rrrrdepart_title_referencesz%HTMLTranslator.depart_title_referencecCs&|jj|j|ddd|d|_dS)Nrr )rr)rr_rrh)r,rrrr visit_topicszHTMLTranslator.visit_topiccCs|jjdg|_dS)Nz )rr_rh)r,rrrr depart_topic$s zHTMLTranslator.depart_topiccCs|jj|j|ddddS)NhrrF)r)rr_r)r,rrrrvisit_transition)szHTMLTranslator.visit_transitioncCsdS)Nr)r,rrrrdepart_transition,sz HTMLTranslator.depart_transitioncCs|j|ddddS)NrBF)r$)r)r,rrrr visit_version/szHTMLTranslator.visit_versioncCs |jdS)N)r)r,rrrrdepart_version2szHTMLTranslator.depart_versioncCstd|jjdS)Nz$visiting unimplemented node type: %s)NotImplementedError __class__r)r,rrrrr5sz"HTMLTranslator.unimplemented_visit)r@F)r@)r)N)rr?)rr)rr)r?r?)T)rr?r?)rrr)rrr)rrr)r?)rrr__doc__r^r3rr4rnr]rrrrrscompilerUrrordrsrYrrrurxr{rrSrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr}r r rrrrrrrrrrrrrr!r"r$r%r&r'r(r)rrr,r-r1r5r7r8r=r>rArBrCrDrErFrHrIrJrKrOrPrQrRrTrVrWrXr[r\r]r^rjrzr{r|r}rrrrrrrrrrrrrrrrrrrrrr*rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r r rrrrrrrrrrrrrrrrLbs8  ;   D           A       e                                                             )        rLc@seZdZdZddZddZddZdd ZeZeZ eZ eZ eZ eZ eZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZeZ eZ!eZ"d S) ra Raise `nodes.NodeFound` if non-simple list item is encountered. Here "simple" means a list item containing nothing other than a single paragraph, a simple list, or a paragraph followed by a simple list. This version also checks for simple field lists and docinfo. cCs tjdS)N)rr)r,rrrr default_visitEszSimpleListChecker.default_visitcCsvdd|jD}|r\t|dtjr\t|dtjsTt|dtjsTt|dtjr\|jt|dkrldStj dS)NcSsg|]}t|tjs|qSr)rrr)rTrrrrrVJsz5SimpleListChecker.visit_list_item..rrWr r r ) rrrZ paragraphrrrrr r)r,rrrrrrHs z!SimpleListChecker.visit_list_itemcCsdS)Nr)r,rrrr pass_nodeYszSimpleListChecker.pass_nodecCs tjdS)N)rr )r,rrrr ignore_node\szSimpleListChecker.ignore_nodeN)#rrrrrrr r!rrrrAr(rrrrrrrrrr!r$rrrrCrErJrHr rrZ visit_pendingrrrrr:s@ r)#rroos.pathr/rsurllib.requestrk urllib.parse urllib.errorZ PIL.Imager ImportErrorrnrgrFrr r r r Zdocutils.utils.error_reportingr Zdocutils.transformsrZdocutils.utils.mathrrrrrrrXrLZGenericNodeVisitorrrrrrs@    7c