o ×$•aGˆã@s:dZddlZddlZddlZddlZddlZddlZddlm Z m Z m Z m Z ddl mZddlmZmZmZddlmZddlmZddlmZdd lmZdd lmZmZdd lmZm Z m!Z!dd l"m#Z#dd l$m%Z%ddl&m'Z'e rzddl(m)Z)e# *e+¡Z,de-de.de-fdd„Z/Gdd„deƒZ0Gdd„de%eƒZdS)zØ sphinx.writers.html ~~~~~~~~~~~~~~~~~~~ docutils writers handling Sphinx' custom nodes. :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. :license: BSD, see LICENSE for details. éN)Ú TYPE_CHECKINGÚIterableÚTupleÚcast)Únodes)ÚElementÚNodeÚText)ÚHTMLTranslator)ÚWriter)Úaddnodes)ÚBuilder)ÚRemovedInSphinx50WarningÚRemovedInSphinx60Warning)Ú_Ú__Úadmonitionlabels)Úlogging)ÚSphinxTranslator)Úget_image_size)ÚStandaloneHTMLBuilderÚlengthÚscaleÚreturncCsLt d|¡}|s |S|dkr|S| ¡\}}t|ƒ|d}dt|ƒ|fS)z/Multiply *length* (width or height) by *scale*.z^(\d*\.?\d*)\s*(\S*)$édz%s%s)ÚreÚmatchÚgroupsÚfloatÚint)rrÚmatchedÚamountÚunitÚresult©r$ú5/usr/lib/python3/dist-packages/sphinx/writers/html.pyÚmultiply_length*s  r&csZeZdZe ej¡ZedD]Zdedvrdedd<qd‡fd d „ Zdd d „Z ‡Z S)Ú HTMLWriteréz--embed-stylesheetérÚdefaultÚbuilderrrNcstƒ ¡||_dS©N)ÚsuperÚ__init__r+)Úselfr+©Ú __class__r$r%r.?s  zHTMLWriter.__init__cCsp|j |j|j¡}tt|ƒ|_|j |¡|j ¡|_dD] }t ||t ||dƒƒqd  |jj dd…¡|_ dS)N)Ú head_prefixÚ stylesheetÚheadÚ body_prefixÚbody_pre_docinfoÚdocinfoÚbodyÚfragmentÚ body_suffixÚmetaÚtitleÚsubtitleÚheaderÚfooterÚ html_prologÚ html_headÚ html_titleÚ html_subtitleÚ html_bodyÚr()r+Úcreate_translatorÚdocumentrr ÚvisitorÚ walkaboutÚastextÚoutputÚsetattrÚgetattrÚjoinr;Ú clean_meta)r/rHÚattrr$r$r%Ú translateCs   zHTMLWriter.translate)r+rrN)rN) Ú__name__Ú __module__Ú __qualname__ÚcopyÚdeepcopyr Ú settings_specÚ_settingr.rQÚ __classcell__r$r$r0r%r'7s    €r'csè eZdZUdZdZded<dejdeddf‡fdd„ Z d e ddfd d „Z d e ddfd d „Z d e ddfdd„Z d e ddfdd„Zd e ddfdd„Zd e ddfdd„Zd e ddfdd„Zd e ddfdd„Zd e ddfdd„Zd e ddfdd„Zd e ddfdd„Zd e ddfd d!„Zd e ddfd"d#„Zd e ddfd$d%„Zd e ddfd&d'„Zd e ddfd(d)„Zd e ddfd*d+„Zd e ddfd,d-„Zd e ddfd.d/„Zd e ddfd0d1„Zd e ddfd2d3„Zd e ddfd4d5„Z d e ddfd6d7„Z!d e ddfd8d9„Z"d e ddfd:d;„Z#d e ddfdd?„Z%d e ddfd@dA„Z&d e ddfdBdC„Z'd e ddfdDdE„Z(d e ddfdFdG„Z)d e ddfdHdI„Z*d e ddfdJdK„Z+d e ddfdLdM„Z,dd e dOe-ddfdPdQ„Z.d e ddfdRdS„Z/d e ddfdTdU„Z0d e de1e2dVffdWdX„Z3d e ddfdYdZ„Z4d e ddfd[d\„Z5d e d]e-ddfd^d_„Z6d e ddfd`da„Z7d e ddf‡fdbdc„ Z8d e ddf‡fddde„ Z9d e ddfdfdg„Z:d e ddfdhdi„Z;d e ddfdjdk„Zd e ddfdpdq„Z?d e ddf‡fdrds„ Z@d e ddf‡fdtdu„ ZAd e ddf‡fdvdw„ ZBd e ddf‡fdxdy„ ZCd e ddf‡fdzd{„ ZDd e ddfd|d}„ZEd e ddfd~d„ZFd e ddfd€d„ZGd e ddfd‚dƒ„ZHd e ddfd„d…„ZId e ddfd†d‡„ZJd e ddfdˆd‰„ZKd e ddfdŠd‹„ZLd e ddfdŒd„ZMd e ddfdŽd„ZNd e ddfdd‘„ZOd ePdeQf‡fd’d“„ ZRd e ddfd”d•„ZSd e ddfd–d—„ZTd e ddfd˜d™„ZUd e ddfdšd›„ZVd e ddf‡fdœd„ ZWd e ddf‡fdždŸ„ ZXd e ddf‡fd d¡„ ZYd e ddfd¢d£„ZZd e ddfd¤d¥„Z[d e ddfd¦d§„Z\d e ddfd¨d©„Z]d e ddfdªd«„Z^d e ddfd¬d­„Z_d e ddfd®d¯„Z`d e ddfd°d±„Zad e ddfd²d³„Zbd e ddfd´dµ„Zcd e ddfd¶d·„Zdd e ddf‡fd¸d¹„ Zed efddfdºd»„Zgd e ddfd¼d½„Zhd e ddfd¾d¿„Zid e ddfdÀdÁ„Zjd e ddfdÂdÄZkd e ddfdÄdÅ„Zld e ddfdÆdÇ„Zmd e ddfdÈdÉ„Znd e ddfdÊdË„Zod e ddfdÌdÍ„Zpd e ddfdÎdÏ„Zqd e ddfdÐdÑ„Zrd e ddfdÒdÓ„Zsd e ddfdÔdÕ„Ztd e ddfdÖdׄZud e ddfdØdÙ„Zvd e ddfdÚdÛ„Zwd e ddfdÜdÝ„Zxd e ddfdÞdß„Zyd e ddfdàdá„Zzd e ddfdâdã„Z{d e ddfdädå„Z|d e ddfdædç„Z}d e ddfdèdé„Z~d e ddfdêdë„Zd e ddfdìdí„Z€d e ddfdîdï„Zd e ddf‡fdðdñ„ Z‚d e ddf‡fdòdó„ Zƒd e ddfdôdõ„Z„d e ddf‡fdöd÷„ Z…d e ddf‡fdødù„ Z†d e ddf‡fdúdû„ Z‡d e ddfdüdý„Zˆd e ddf‡fdþdÿ„ Z‰dd e de-ddfdd„ZŠdd e de-ddfdd„Z‹dd e de-ddfdd„ZŒdd e de-ddfdd„Zd ePddfd d „ZŽede-fd d „ƒZed d„ƒZ‘edd„ƒZ’‡Z“S(r z% Our custom HTML translator. Nrr+rGrcsdtƒ ||¡|jj|_|jjg|_|jj|_d|_|jj |_ d|_ d|_ dg|_ dg|_d|_dS)NrrE)r-r.r+Ú highlighterÚcurrent_docnameÚdocnamesÚconfigÚ manpages_urlÚprotect_literal_textÚhtml_secnumber_suffixÚsecnumber_suffixÚparam_separatorÚoptional_param_levelÚ_table_row_indicesÚ_fieldlist_row_indicesÚrequired_params_left)r/rGr+r0r$r%r.Ys     zHTMLTranslator.__init__ÚnodecCs(|j |d¡|j d|d¡dS)NÚdocnamez)r\Úappendr8©r/rgr$r$r%Úvisit_start_of_filegsz"HTMLTranslator.visit_start_of_filecCs|j ¡dSr,)r\Úpoprjr$r$r%Údepart_start_of_filelóz#HTMLTranslator.depart_start_of_filecCs|j | |d¡¡dS)NÚdl©r8riÚstarttagrjr$r$r%Ú visit_descvszHTMLTranslator.visit_desccCó|j d¡dS)Nz ©r8rirjr$r$r%Ú depart_descyózHTMLTranslator.depart_desccCs&|j | |d¡¡|jd7_dS)NÚdtr)©r8rirqr_rjr$r$r%Úvisit_desc_signature|sz#HTMLTranslator.visit_desc_signaturecCs8|jd8_| d¡s| |tdƒ¡|j d¡dS)Nr)Ú is_multilineúPermalink to this definitionz )r_ÚgetÚadd_permalink_refrr8rirjr$r$r%Údepart_desc_signatures z$HTMLTranslator.depart_desc_signaturecCódSr,r$rjr$r$r%Úvisit_desc_signature_line‡óz(HTMLTranslator.visit_desc_signature_linecCs,| d¡r| |jtdƒ¡|j d¡dS)NÚ add_permalinkr{z
)r|r}Úparentrr8rirjr$r$r%Údepart_desc_signature_lineŠs z)HTMLTranslator.depart_desc_signature_linecCó|j | |dd¡¡dS©NÚddrErprjr$r$r%Úvisit_desc_contentóz!HTMLTranslator.visit_desc_contentcCrs)Nzrtrjr$r$r%Údepart_desc_content“rvz"HTMLTranslator.depart_desc_contentcCr…)NÚspanrErprjr$r$r%Úvisit_desc_inline–r‰z HTMLTranslator.visit_desc_inlinecCrs)Núrtrjr$r$r%Údepart_desc_inline™rvz!HTMLTranslator.depart_desc_inlinecCr…©NÚcoderErprjr$r$r%Úvisit_desc_nameŸr‰zHTMLTranslator.visit_desc_namecCrs©Núrtrjr$r$r%Údepart_desc_name¢rvzHTMLTranslator.depart_desc_namecCr…rrprjr$r$r%Úvisit_desc_addname¥r‰z!HTMLTranslator.visit_desc_addnamecCrsr’rtrjr$r$r%Údepart_desc_addname¨rvz"HTMLTranslator.depart_desc_addnamecCrr,r$rjr$r$r%Úvisit_desc_type«rzHTMLTranslator.visit_desc_typecCrr,r$rjr$r$r%Údepart_desc_type®rzHTMLTranslator.depart_desc_typecCs(|j d¡|j d¡|j d¡dS)Nz z-z# rtrjr$r$r%Úvisit_desc_returns±s  z!HTMLTranslator.visit_desc_returnscCrs)Nzrtrjr$r$r%Údepart_desc_returns¶rvz"HTMLTranslator.depart_desc_returnscCs:|j d¡d|_d|_tdd„|jDƒƒ|_|j|_dS)Nz (r)rcSsg|]}t|tjƒ‘qSr$)Ú isinstancer Údesc_parameter)Ú.0Úcr$r$r%Ú ¾sÿz;HTMLTranslator.visit_desc_parameterlist..) r8riÚ first_paramrcÚsumÚchildrenrfÚchild_text_separatorrbrjr$r$r%Úvisit_desc_parameterlist¹s  ÿ z'HTMLTranslator.visit_desc_parameterlistcCrs)Nz )rtrjr$r$r%Údepart_desc_parameterlistÂrvz(HTMLTranslator.depart_desc_parameterlistcCsX|jrd|_n |js|j |j¡|jdkr|jd8_| d¡s*|j d¡dSdS)Nrr)Únoemphz)r rfr8rirbrcÚhasattrrjr$r$r%Úvisit_desc_parameterËs  ÿz#HTMLTranslator.visit_desc_parametercCs2| d¡s |j d¡|jr|j |j¡dSdS)Nr¦ú)r§r8rirfrbrjr$r$r%Údepart_desc_parameterÕs  ÿz$HTMLTranslator.depart_desc_parametercCs|jd7_|j d¡dS)Nr)z[©rcr8rirjr$r$r%Úvisit_desc_optionalÛóz"HTMLTranslator.visit_desc_optionalcCs|jd8_|j d¡dS)Nr)z]r«rjr$r$r%Údepart_desc_optionalßr­z#HTMLTranslator.depart_desc_optionalcCó|j |j|dddd¡dS)NÚemrEÚproperty©ÚCLASSrprjr$r$r%Úvisit_desc_annotationãóz$HTMLTranslator.visit_desc_annotationcCrs)Nr©rtrjr$r$r%Údepart_desc_annotationærvz%HTMLTranslator.depart_desc_annotationcCs |j |j|d|dd¡dS)NÚdivÚtyper²rprjr$r$r%Úvisit_versionmodifiedës z$HTMLTranslator.visit_versionmodifiedcCrs)Nú rtrjr$r$r%Údepart_versionmodifiedîrvz%HTMLTranslator.depart_versionmodifiedc Cs`ddi}| d¡s d|vr|dd7<n|dd7<d|vrB|dp'd|d<|jjrA|d d ¡rA| |d¡|d<d |_nd |vsJJd ƒ‚d|d |d<t|jtj ƒsqt |ƒd krgt|dtj ƒsiJ‚|dd7<d|vr{|d|d<d|vr…|d|d<|j   |j|ddfi|¤Ž¡| d¡r®|j   d|jd tt|dƒ¡¡dSdS)NÚclassÚ referenceÚinternalÚrefuriú internalú externalú#Úhrefzmailto:TÚrefidz3References must have "refuri" or "refid" attribute.r)rz image-referenceÚreftitler<ÚtargetÚarEÚ secnumberz%sÚ.)r|ÚsettingsÚcloak_email_addressesÚ startswithÚ cloak_mailtoÚ in_mailtor›rƒrÚ TextElementÚlenÚimager8rirqrarNÚmapÚstr©r/rgÚattsr$r$r%Úvisit_referenceòs6€ ÿ     ÿÿzHTMLTranslator.visit_referencecCó| |¡dSr,)rÖrjr$r$r%Úvisit_number_referencernz%HTMLTranslator.visit_number_referencecCr×r,)Údepart_referencerjr$r$r%Údepart_number_referencernz&HTMLTranslator.depart_number_referencecCótj‚r,©rÚSkipNoderjr$r$r%Ú visit_commentózHTMLTranslator.visit_commentrEÚnamecCsF|j |j|dd|d¡|r| dt |t|¡¡| |¡dS)Nr·z admonition r²r)r8rirqÚinsertrr<rÚset_first_last)r/rgràr$r$r%Úvisit_admonitions  ÿzHTMLTranslator.visit_admonitioncCó| |d¡dS)NÚseealso©rãrjr$r$r%Ú visit_seealso rvzHTMLTranslator.visit_seealsocCr×r,©Údepart_admonitionrjr$r$r%Údepart_seealso#rnzHTMLTranslator.depart_seealso.cCs¢| d¡r |dSt|jtjƒrO|jjdkr1|jd}d||jddf}||jjvr0d|}nd|jdd}||jjvrBd }|jj |¡rO|jj|SdS) NrÈÚ singlehtmléÿÿÿÿz%s/#%sÚidsrz%s/rÂrE) r|r›rƒrÚsectionr+ràr\Ú secnumbers)r/rgrhÚ anchornamer$r$r%Ú get_secnumber&s    €  zHTMLTranslator.get_secnumbercCs8| |¡}|r|j dd tt|ƒ¡|j¡dSdS)Nz&%srÉ)rñr8rirNrÒrÓra)r/rgrÈr$r$r%Ú add_secnumber9s  ÿÿzHTMLTranslator.add_secnumbercs|dtdtddf‡fdd„ }ˆjjjd |¡}|rz#numfig_format is not defined for %srÉú r)r+ràr\Ú fignumbersr|r8rir]Ú numfig_formatrÚloggerÚwarningrNrÒrÓ)rórôÚkeyÚprefixÚmsgÚnumbers©r/r$r%Úappend_fignumber@s    ÷z6HTMLTranslator.add_fignumber..append_fignumberÚstdrírz Any IDs not assigned for %s node©Úlocation) rÓr+ÚenvÚdomainsÚget_enumerable_node_typerÐrÚtagnamerørù)r/rgrÿrórür$rþr%Ú add_fignumber?sûzHTMLTranslator.add_fignumberr<cCsN|dr!|jjr#|jjr%d}|j ||dd||jjf¡dSdSdSdS)Nríz2%sr)r]Úhtml_permalinksr+Úadd_permalinksr8riÚhtml_permalinks_icon)r/rgr<Úformatr$r$r%r}Ys  ÿ þz HTMLTranslator.add_permalink_refcCs8|ddd…D]}|j d|¡|d |¡qdS)a­Generate hyperlink targets for listings. Original visit_bullet_list(), visit_definition_list() and visit_enumerated_list() generates hyperlink targets inside listing tags (