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-fddZ/GdddeZ0Gddde%eZdS)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_CHECKINGIterableTuplecast)nodes)ElementNodeText)HTMLTranslator)Writer)addnodes)Builder)RemovedInSphinx50WarningRemovedInSphinx60Warning)___admonitionlabels)logging)SphinxTranslator)get_image_size)StandaloneHTMLBuilderlengthscalereturncCsLtd|}|s |S|dkr|S|\}}t||d}dt||fS)z/Multiply *length* (width or height) by *scale*.z^(\d*\.?\d*)\s*(\S*)$dz%s%s)rematchgroupsfloatint)rrmatchedamountunitresultr$5/usr/lib/python3/dist-packages/sphinx/writers/html.pymultiply_length*s  r&csZeZdZeejZedD]Zdedvrdedd<qdfd d Zdd d Z Z S) HTMLWriterz--embed-stylesheetrdefaultbuilderrrNcst||_dSN)super__init__r+)selfr+ __class__r$r%r.?s  zHTMLWriter.__init__cCsp|j|j|j}tt||_|j||j|_dD] }t ||t ||dqd |jj dd|_ dS)N) head_prefix stylesheethead body_prefixbody_pre_docinfodocinfobodyfragment body_suffixmetatitlesubtitleheaderfooter html_prolog html_head html_title html_subtitle html_bodyr()r+create_translatordocumentrr visitor walkaboutastextoutputsetattrgetattrjoinr; clean_meta)r/rHattrr$r$r% translateCs   zHTMLWriter.translate)r+rrN)rN) __name__ __module__ __qualname__copydeepcopyr settings_spec_settingr.rQ __classcell__r$r$r0r%r'7s    r'cs eZdZUdZdZded<dejdeddffdd Z d e ddfd d Z d e ddfd d Z d e ddfddZ d e ddfddZd e ddfddZd e ddfddZd e ddfddZd e ddfddZd e ddfddZd e ddfddZd e ddfddZd 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 ddfd0d1Zd e ddfd2d3Zd e ddfd4d5Z d e ddfd6d7Z!d e ddfd8d9Z"d e ddfd:d;Z#d e ddfdd?Z%d e ddfd@dAZ&d e ddfdBdCZ'd e ddfdDdEZ(d e ddfdFdGZ)d e ddfdHdIZ*d e ddfdJdKZ+d e ddfdLdMZ,dd e dOe-ddfdPdQZ.d e ddfdRdSZ/d e ddfdTdUZ0d e de1e2dVffdWdXZ3d e ddfdYdZZ4d e ddfd[d\Z5d e d]e-ddfd^d_Z6d e ddfd`daZ7d e ddffdbdc Z8d e ddffddde Z9d e ddfdfdgZ:d e ddfdhdiZ;d e ddfdjdkZd e ddfdpdqZ?d e ddffdrds Z@d e ddffdtdu ZAd e ddffdvdw ZBd e ddffdxdy ZCd e ddffdzd{ ZDd e ddfd|d}ZEd e ddfd~dZFd e ddfddZGd e ddfddZHd e ddfddZId e ddfddZJd e ddfddZKd e ddfddZLd e ddfddZMd e ddfddZNd e ddfddZOd ePdeQffdd ZRd e ddfddZSd e ddfddZTd e ddfddZUd e ddfddZVd e ddffdd ZWd e ddffdd ZXd e ddffdd ZYd e ddfddZZd e ddfddZ[d e ddfddZ\d e ddfddZ]d e ddfddZ^d e ddfddZ_d e ddfddZ`d e ddfddZad e ddfddZbd e ddfddZcd e ddfddZdd e ddffdd Zed efddfddZgd e ddfddZhd e ddfddZid e ddfddZjd e ddfddÄZkd e ddfddńZld e ddfddDŽZmd e ddfddɄZnd e ddfdd˄Zod e ddfdd̈́Zpd e ddfddτZqd e ddfddфZrd e ddfddӄZsd e ddfddՄZtd e ddfddׄZud e ddfddلZvd e ddfddۄZwd e ddfdd݄Zxd e ddfdd߄Zyd e ddfddZzd e ddfddZ{d e ddfddZ|d e ddfddZ}d e ddfddZ~d e ddfddZd e ddfddZd e ddfddZd e ddffdd Zd e ddffdd Zd e ddfddZd e ddffdd Zd e ddffdd Zd e ddffdd Zd e ddfddZd e ddffdd Zdd e de-ddfddZdd e de-ddfddZdd e de-ddfddZdd e de-ddfddZd ePddfd d Zede-fd d Zed dZeddZZS(r z% Our custom HTML translator. Nrr+rGrcsdt|||jj|_|jjg|_|jj|_d|_|jj |_ d|_ d|_ dg|_ dg|_d|_dS)NrrE)r-r.r+ highlightercurrent_docnamedocnamesconfig manpages_urlprotect_literal_texthtml_secnumber_suffixsecnumber_suffixparam_separatoroptional_param_level_table_row_indices_fieldlist_row_indicesrequired_params_left)r/rGr+r0r$r%r.Ys     zHTMLTranslator.__init__nodecCs(|j|d|jd|ddS)Ndocnamez)r\appendr8r/rgr$r$r%visit_start_of_filegsz"HTMLTranslator.visit_start_of_filecCs|jdSr,)r\poprjr$r$r%depart_start_of_filelz#HTMLTranslator.depart_start_of_filecCs|j||ddS)Ndlr8ristarttagrjr$r$r% visit_descvszHTMLTranslator.visit_desccC|jddS)Nz r8rirjr$r$r% depart_descyzHTMLTranslator.depart_desccCs&|j||d|jd7_dS)Ndtr)r8rirqr_rjr$r$r%visit_desc_signature|sz#HTMLTranslator.visit_desc_signaturecCs8|jd8_|ds||td|jddS)Nr) is_multilinePermalink to this definitionz )r_getadd_permalink_refrr8rirjr$r$r%depart_desc_signatures z$HTMLTranslator.depart_desc_signaturecCdSr,r$rjr$r$r%visit_desc_signature_linez(HTMLTranslator.visit_desc_signature_linecCs,|dr||jtd|jddS)N add_permalinkr{z
)r|r}parentrr8rirjr$r$r%depart_desc_signature_lines z)HTMLTranslator.depart_desc_signature_linecC|j||dddSNddrErprjr$r$r%visit_desc_contentz!HTMLTranslator.visit_desc_contentcCrs)Nzrtrjr$r$r%depart_desc_contentrvz"HTMLTranslator.depart_desc_contentcCr)NspanrErprjr$r$r%visit_desc_inlinerz HTMLTranslator.visit_desc_inlinecCrs)Nrtrjr$r$r%depart_desc_inlinervz!HTMLTranslator.depart_desc_inlinecCrNcoderErprjr$r$r%visit_desc_namerzHTMLTranslator.visit_desc_namecCrsNrtrjr$r$r%depart_desc_namervzHTMLTranslator.depart_desc_namecCrrrprjr$r$r%visit_desc_addnamerz!HTMLTranslator.visit_desc_addnamecCrsrrtrjr$r$r%depart_desc_addnamervz"HTMLTranslator.depart_desc_addnamecCrr,r$rjr$r$r%visit_desc_typerzHTMLTranslator.visit_desc_typecCrr,r$rjr$r$r%depart_desc_typerzHTMLTranslator.depart_desc_typecCs(|jd|jd|jddS)Nz z-z# rtrjr$r$r%visit_desc_returnss  z!HTMLTranslator.visit_desc_returnscCrs)Nzrtrjr$r$r%depart_desc_returnsrvz"HTMLTranslator.depart_desc_returnscCs:|jdd|_d|_tdd|jD|_|j|_dS)Nz (r)rcSsg|]}t|tjqSr$) isinstancer desc_parameter).0cr$r$r% sz;HTMLTranslator.visit_desc_parameterlist..) r8ri first_paramrcsumchildrenrfchild_text_separatorrbrjr$r$r%visit_desc_parameterlists  z'HTMLTranslator.visit_desc_parameterlistcCrs)Nz )rtrjr$r$r%depart_desc_parameterlistrvz(HTMLTranslator.depart_desc_parameterlistcCsX|jrd|_n |js|j|j|jdkr|jd8_|ds*|jddSdS)Nrr)noemphz)rrfr8rirbrchasattrrjr$r$r%visit_desc_parameters  z#HTMLTranslator.visit_desc_parametercCs2|ds |jd|jr|j|jdSdS)Nr)rr8rirfrbrjr$r$r%depart_desc_parameters  z$HTMLTranslator.depart_desc_parametercCs|jd7_|jddS)Nr)z[rcr8rirjr$r$r%visit_desc_optionalz"HTMLTranslator.visit_desc_optionalcCs|jd8_|jddS)Nr)z]rrjr$r$r%depart_desc_optionalrz#HTMLTranslator.depart_desc_optionalcC|j|j|dddddS)NemrEpropertyCLASSrprjr$r$r%visit_desc_annotationz$HTMLTranslator.visit_desc_annotationcCrs)Nrrtrjr$r$r%depart_desc_annotationrvz%HTMLTranslator.depart_desc_annotationcCs |j|j|d|dddS)Ndivtyperrprjr$r$r%visit_versionmodifieds z$HTMLTranslator.visit_versionmodifiedcCrs)N rtrjr$r$r%depart_versionmodifiedrvz%HTMLTranslator.depart_versionmodifiedc Cs`ddi}|ds d|vr|dd7<n|dd7<d|vrB|dp'd|d<|jjrA|dd 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||dr|j d|jdtt|ddSdS)Nclass referenceinternalrefuri internal external#hrefzmailto:Trefidz3References must have "refuri" or "refid" attribute.r)rz image-referencereftitler<targetarE secnumberz%s.)r|settingscloak_email_addresses startswith cloak_mailto in_mailtorrr TextElementlenimager8rirqrarNmapstrr/rgattsr$r$r%visit_references6      zHTMLTranslator.visit_referencecC||dSr,)rrjr$r$r%visit_number_referencernz%HTMLTranslator.visit_number_referencecCrr,)depart_referencerjr$r$r%depart_number_referencernz&HTMLTranslator.depart_number_referencecCtjr,rSkipNoderjr$r$r% visit_commentzHTMLTranslator.visit_commentrEnamecCsF|j|j|dd|d|r|dt|t|||dS)Nrz admonition rr)r8rirqinsertrr<rset_first_last)r/rgrr$r$r%visit_admonitions  zHTMLTranslator.visit_admonitioncC||ddS)Nseealsorrjr$r$r% visit_seealso rvzHTMLTranslator.visit_seealsocCrr,depart_admonitionrjr$r$r%depart_seealso#rnzHTMLTranslator.depart_seealso.cCs|dr |dSt|jtjrO|jjdkr1|jd}d||jddf}||jjvr0d|}nd|jdd}||jjvrBd }|jj|rO|jj|SdS) Nr singlehtmlz%s/#%sidsrz%s/rrE) r|rrrsectionr+rr\ secnumbers)r/rgrh anchornamer$r$r% get_secnumber&s      zHTMLTranslator.get_secnumbercCs8||}|r|jddtt||jdSdS)Nz&%sr)rr8rirNrrra)r/rgrr$r$r% add_secnumber9s  zHTMLTranslator.add_secnumbercs|dtdtddffdd }jjjd|}|rz#numfig_format is not defined for %sr r)r+rr\ fignumbersr|r8rir] numfig_formatrloggerwarningrNrr)rrkeyprefixmsgnumbersr/r$r%append_fignumber@s    z6HTMLTranslator.add_fignumber..append_fignumberstdrrz Any IDs not assigned for %s nodelocation) rr+envdomainsget_enumerable_node_typerrtagnamerr)r/rgrrrr$rr% add_fignumber?szHTMLTranslator.add_fignumberr<cCsN|dr!|jjr#|jjr%d}|j||dd||jjfdSdSdSdS)Nrz2%sr)r]html_permalinksr+add_permalinksr8rihtml_permalinks_icon)r/rgr<formatr$r$r%r}Ys  z HTMLTranslator.add_permalink_refcCs8|dddD]}|jd||d|qdS)aGenerate hyperlink targets for listings. Original visit_bullet_list(), visit_definition_list() and visit_enumerated_list() generates hyperlink targets inside listing tags (