o
    f'ha[M  ã                   @   sŒ   d Z dZddlZddlZddlZddlmZmZmZm	Z	 ddl
mZ ddlmZ ddlmZmZ G dd	„ d	ejjƒZG d
d„ dejjƒZdS )zí
Plain HyperText Markup Language document tree Writer.

The output conforms to the `HTML 5` specification.

The cascading style sheet "minimal.css" is required for proper viewing,
the style sheet "plain.css" improves reading experience.
ÚreStructuredTexté    N)ÚfrontendÚnodesÚwritersÚio)Ú
writer_aux)Ú
_html_base)ÚPILÚurl2pathnamec                   @   sì  e Zd ZdZ	 ddgZde ej 	e
¡¡gZdZej e ej 	e
¡¡e¡Zddde d	ged
dœfddgddejdœfdd e¡ dgddejedœfddgddejdœfddgddd œfd!e d"gd#ejed$œfd%d&gd' ¡ d(d)d*œfd+d,gd-d.gd.d/d0d1œfd2d3gg d4¢d5d/d*œfd6d7gd8dejdœfd9d:gd;dd œfd<d=gd8dejdœfd>d?gd@dd œfdAdBgdCdejdœfdDdEgdFdd œfdGdHgdIdJifdKdLgdIdMifdNdOgdPdejdœfdQdRgdSdd œfdTdUgdejdVœfffZdWZdXdY„ ZdS )ZÚWriter)ÚhtmlÚhtml5Úhtml4ÚxhtmlÚxhtml10zminimal.cssz	plain.cssÚ.ztemplate.txtzHTML-Specific OptionsNz<Specify the template file (UTF-8 encoded).  Default is "%s".z
--templatez<file>)ÚdefaultÚmetavarzhComma separated list of stylesheet URLs. Overrides previous --stylesheet and --stylesheet-path settings.z--stylesheetz<URL[,URL,...]>Ústylesheet_path)r   Ú	overridesÚ	validatorzÙComma separated list of stylesheet paths. Relative paths are expanded if a matching file is found in the --stylesheet-dirs. With --link-stylesheet, the path is rewritten relative to the output HTML file. Default: "%s"ú,z--stylesheet-pathz<file[,file,...]>Ú
stylesheet)r   r   r   r   z�Embed the stylesheet(s) in the output HTML file.  The stylesheet files must be accessible during processing. This is the default.z--embed-stylesheeté   Ú
store_true)r   Úactionr   zNLink to the stylesheet(s) in the output HTML file. Default: embed stylesheets.z--link-stylesheetÚembed_stylesheetÚstore_false)Údestr   z�Comma-separated list of directories where stylesheets are found. Used by --stylesheet-path when expanding relative path arguments. Default: "%s"z--stylesheet-dirsz<dir[,dir,...]>)r   r   r   z|Specify the initial header level.  Default is 2 for "<h2>".  Does not affect document title & subtitle (see --no-doc-title).z--initial-header-levelz1 2 3 4 5 6Ú2z<level>)Úchoicesr   r   z[Format for footnote references: one of "superscript" or "brackets".  Default is "brackets".z--footnote-referencesÚsuperscriptÚbracketsz<format>Útrim_footnote_reference_space)r    r   r   r   z{Format for block quote attributions: one of "dash" (em-dash prefix), "parentheses"/"parens", or "none".  Default is "dash".z--attribution)ÚdashÚparenthesesÚparensÚnoner$   zpRemove extra vertical whitespace between items of "simple" bullet lists and enumerated lists.  Default: enabled.z--compact-listsTz3Disable compact simple bullet and enumerated lists.z--no-compact-listsÚcompact_listszXRemove extra vertical whitespace between items of simple field lists.  Default: enabled.z--compact-field-listsz#Disable compact simple field lists.z--no-compact-field-listsÚcompact_field_listszZEmbed images in the output HTML file, if the image files are accessible during processing.z--embed-imagesr   z<Link to images in the output HTML file. This is the default.z--link-imagesÚembed_imagesz‰Added to standard table classes. Defined styles: borderless, booktabs, align-left, align-center, align-right, colwidths-auto. Default: ""z--table-styler   Ú zkMath output format (one of "MathML", "HTML", "MathJax", or "LaTeX") and option(s). Default: "HTML math.css"z--math-outputzHTML math.csszGPrepend an XML declaration. (Thwarts HTML5 conformance.) Default: Falsez--xml-declarationFzOmit the XML declaration.z--no-xml-declarationÚxml_declarationzyObfuscate email addresses to confuse harvesters while still keeping email links usable with standards-compliant browsers.z--cloak-email-addresses)r   r   zhtml5 writerc                 C   s   i | _ t| _d S ©N)ÚpartsÚHTMLTranslatorÚtranslator_class©Úself© r3   úJ/usr/lib/python3/dist-packages/docutils/writers/html5_polyglot/__init__.pyÚ__init__›   s   
zWriter.__init__)Ú__name__Ú
__module__Ú__qualname__Ú	supportedÚdefault_stylesheetsÚdocutilsÚ_datadirÚosÚpathÚabspathÚ__file__Údefault_stylesheet_dirsÚdefault_templateÚjoinÚdefault_template_pathr   Úvalidate_comma_separated_listÚvalidate_booleanÚsplitÚsettings_specÚconfig_sectionr5   r3   r3   r3   r4   r   '   sü    ÿÿýÿýüþú	ÿýýþþüÿýþýÿýÿýþÿýþÿýýûüÿýþ
ý¢ýfr   c                       s`  e Zd ZdZdZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	d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d d!„ Zd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,Z‡ fd-d.„Zd/d0„ Zed1ƒ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.‡  Z/S )Rr/   a>  
    This writer generates `polyglot markup`: HTML5 that is also valid XML.

    Safe subclassing: when overriding, treat ``visit_*`` and ``depart_*``
    methods as a unit to prevent breaks due to internal changes. See the
    docstring of docutils.writers._html_base.HTMLTranslator for details
    and examples.
    zG<meta name="viewport" content="width=device-width, initial-scale=1" />
c                 C   s   | j  |  |dd¡¡ d S )NÚabbrr+   )ÚbodyÚappendÚstarttag©r2   Únoder3   r3   r4   Úvisit_acronym¯   s   zHTMLTranslator.visit_acronymc                 C   ó   | j  d¡ d S )Nz</abbr>©rK   rL   rN   r3   r3   r4   Údepart_acronym³   ó   zHTMLTranslator.depart_acronymc                 C   s6   | j |ddd� |D ]}|  d|  | ¡ ¡ ¡ q
d S )NÚauthorsF©Úmetaz$<meta name="author" content="%s" />
©Úvisit_docinfo_itemÚadd_metaÚattvalÚastext)r2   rO   Úsubnoder3   r3   r4   Úvisit_authors¸   s   ÿÿzHTMLTranslator.visit_authorsc                 C   ó   |   ¡  d S r-   ©Údepart_docinfo_itemrN   r3   r3   r4   Údepart_authors¾   ó   zHTMLTranslator.depart_authorsc                 C   s4   t |jtjƒr| j d¡ | j |  |dd¡¡ d S )Nú<figcaption>
Úpr+   )Ú
isinstanceÚparentr   ÚfigurerK   rL   rM   rN   r3   r3   r4   Úvisit_captionÂ   s   zHTMLTranslator.visit_captionc                 C   rQ   )Nz</p>
rR   rN   r3   r3   r4   Údepart_captionÇ   rT   zHTMLTranslator.depart_caption)ÚinsÚdelc                    sh   |  dg ¡}‡ fdd„|D ƒ}t|ƒdkr"|d |_| |d ¡ nd|_ˆ j ˆ j||jdd�¡ d S )	NÚclassesc                    s   g | ]	}|ˆ j v r|‘qS r3   )Úsupported_block_tags©Ú.0Úclsr1   r3   r4   Ú
<listcomp>Ñ   s    
ÿz2HTMLTranslator.visit_container.<locals>.<listcomp>r   r   Údivzdocutils container©ÚCLASS)ÚgetÚlenÚhtml5tagnameÚremoverK   rL   rM   )r2   rO   rm   Útagsr3   r1   r4   Úvisit_containerÍ   s   
ÿzHTMLTranslator.visit_containerc                 C   s   | j  d|j ¡ d S )Nz</%s>
)rK   rL   rx   rN   r3   r3   r4   Údepart_containerÛ   ó   zHTMLTranslator.depart_containerc                 C   ó,   | j |ddd� |  d|  | ¡ ¡ ¡ d S )NÚ	copyrightFrV   z,<meta name="dcterms.rights" content="%s" />
rX   rN   r3   r3   r4   Úvisit_copyrightá   ó   
ÿzHTMLTranslator.visit_copyrightc                 C   r_   r-   r`   rN   r3   r3   r4   Údepart_copyrightæ   rc   zHTMLTranslator.depart_copyrightc                 C   r~   )NÚdateFrV   z*<meta name="dcterms.date" content="%s" />
rX   rN   r3   r3   r4   Ú
visit_dateê   r�   zHTMLTranslator.visit_datec                 C   r_   r-   r`   rN   r3   r3   r4   Údepart_dateï   rc   zHTMLTranslator.depart_datec                 C   s:   |  dd¡ptj |d ¡pd}| j d|  |¡ ¡ d S )NÚtitler+   Úsourcezuntitled Docutils documentz<title>%s</title>
)rv   r=   r>   ÚbasenameÚheadrL   Úencode)r2   rO   r†   r3   r3   r4   Úvisit_documentò   s   ÿzHTMLTranslator.visit_documentc                 C   s`  | j  | j| jd| jji g¡ | j | j¡ | j 	d| j
¡ | j 	d| j
¡ | j 	d| j| jj ¡ | j 	d| j| jj ¡ dd | j¡v rM| j d¡ | jrd| jdkr]| j | j¡ n| j | j¡ | j | jdd … ¡ | j |  |d¡¡ | j 	dd	¡ | j | j¡ | j | jdd … | j | j | j | jd d
…  ¡ | jr®J dt| jƒ ƒ‚d S )NÚlangr   zname="dcterms.r+   z=<link rel="schema.dcterms" href="http://purl.org/dc/terms/"/>Úmathjaxr   Úmainz</main>
éÿÿÿÿzlen(context) = %s)Úhead_prefixÚextendÚdoctypeÚhead_prefix_templateÚsettingsÚlanguage_codeÚhtml_prologrL   rW   ÚinsertÚviewportr‰   Úcontent_typeÚoutput_encodingrC   Úmath_headerÚmath_outputr   Ú	html_headÚbody_prefixrM   Úbody_suffixÚfragmentrK   Ú	html_bodyÚbody_pre_docinfoÚdocinfoÚcontextrw   rN   r3   r3   r4   Údepart_document÷   s<   

ÿÿÿ
ÿÿþzHTMLTranslator.depart_documentc                 C   sX   i }|  d¡rd|d  |d< |  d¡rd|d  |d< | j | j|dfi |¤Ž¡ d S )NÚwidthz	width: %sÚstyleÚalignzalign-Úclassrh   )rv   rK   rL   rM   )r2   rO   Úattsr3   r3   r4   Úvisit_figure  s   

 zHTMLTranslator.visit_figurec                 C   s(   t |ƒdkr| j d¡ | j d¡ d S )Nr   z</figcaption>
z
</figure>
)rw   rK   rL   rN   r3   r3   r4   Údepart_figure  s   zHTMLTranslator.depart_figurec                 C   ó   | j  t| jƒ¡ d S r-   ©r¤   rL   rw   rK   rN   r3   r3   r4   Úvisit_footer!  r}   zHTMLTranslator.visit_footerc                 C   s`   | j  ¡ }|  |d¡g}| | j|d … ¡ | d¡ | j |¡ || jd d…< | j|d …= d S )NÚfooterz
</footer>
r   )r¤   ÚpoprM   r‘   rK   rL   r°   rŸ   )r2   rO   Ústartr°   r3   r3   r4   Údepart_footer$  s   

zHTMLTranslator.depart_footerc                 C   r­   r-   r®   rN   r3   r3   r4   Úvisit_header.  r}   zHTMLTranslator.visit_headerc                 C   s^   | j  ¡ }|  |d¡g}| | j|d … ¡ | d¡ | j |¡ | j |¡ | j|d …= d S )NÚheaderz
</header>
)r¤   r±   rM   r‘   rK   rL   rž   rµ   )r2   rO   r²   rµ   r3   r3   r4   Údepart_header1  s   

zHTMLTranslator.depart_header)z	video/mp4z
video/webmz	video/oggc              	      s  i }|d }t  |¡d }|| jvrtt| ƒ |¡S d|v r(|d  dd¡|d< d|v r6|d  dd¡|d< d|v rBd|d  |d	< d
| dg ¡v rNd
|d
< | d|¡|d< t|j	t
jƒslt|j	t
jƒrot|j	j	t
jƒsod}nd}| j d| j|d|fd|i|¤Ž|| d|¡||f ¡ d S )NÚurir   r¦   Úpxr+   Úheightr¨   zalign-%sr©   Úcontrolsrm   Úaltr†   Ú
z!%s<a href="%s">%s</a>%s</video>%sÚvideoÚsrc)Ú	mimetypesÚ
guess_typeÚ
videotypesÚsuperr/   Úvisit_imageÚreplacerv   rf   rg   r   ÚTextElementÚ	referencerK   rL   rM   )r2   rO   rª   r·   ÚmimetypeÚsuffix©Ú	__class__r3   r4   rÃ   =  s4   
ÿþÿ
ÿzHTMLTranslator.visit_imagec                 C   ó   d S r-   r3   rN   r3   r3   r4   Údepart_imageY  ó   zHTMLTranslator.depart_image)ÚcodeÚkbdÚdfnÚsampÚvarÚbdirl   rk   ÚmarkÚsmallÚbÚiÚqÚsÚuc                    s¸   |  dg ¡‰ ‡ fdd„| jD ƒ}t|ƒr!|d |_ˆ  |d ¡ n-ˆ dgkrKt|jtjƒrKd|j  d¡v rK| j	d dkrA| j	d= n| j	 
d	¡ d
|_nd|_| j	 
|  ||jd¡¡ d S )Nrm   c                    ó   g | ]}|ˆ v r|‘qS r3   r3   ro   ©rm   r3   r4   rr   c  ó    ÿz/HTMLTranslator.visit_inline.<locals>.<listcomp>r   ÚlnrÎ   r�   z<code>ú</code>rÕ   Úspanr+   )rv   Úsupported_inline_tagsrw   rx   ry   rf   rg   r   Úliteral_blockrK   rL   rM   )r2   rO   rz   r3   rÜ   r4   Úvisit_inline`  s   

zHTMLTranslator.visit_inlinec                 C   sV   | j  d|j ¡ |jdkr'| d¡dgkr't|jtjƒr'| j  d| ¡  ¡ |`d S )Nú</%s>rÕ   rm   rÞ   z<code data-lineno="%s">)	rK   rL   rx   rv   rf   rg   r   râ   r\   rN   r3   r3   r4   Údepart_inlines  s   ÿzHTMLTranslator.depart_inlinec                 C   s:   t |jd tjƒs| j d¡ | j | j|ddd�¡ d S )Nr   rd   rs   Úlegendrt   )rf   rg   r   ÚcaptionrK   rL   rM   rN   r3   r3   r4   Úvisit_legend{  s   zHTMLTranslator.visit_legendc                 C   rQ   ©Nz</div>
rR   rN   r3   r3   r4   Údepart_legend€  rT   zHTMLTranslator.depart_legendc                    s  |  dg ¡‰ ‡ fdd„| jD ƒ}t|ƒr |d }ˆ  |d ¡ nd}|dkr3| j |  |dd¡¡ d S | j | j||ddd	�¡ | ¡ }t|j	t
jƒsQ| d
d¡}| j |¡D ]!}| ¡ ro| j |¡ro| j d|  |¡ ¡ qW| j |  |¡¡ qW| j d| ¡ t
j‚)Nrm   c                    rÛ   r3   r3   ro   rÜ   r3   r4   rr   ‡  rÝ   z0HTMLTranslator.visit_literal.<locals>.<listcomp>r   rà   rÎ   r+   zdocutils literalrt   r¼   ú z<span class="pre">%s</span>rä   )rv   rá   rw   ry   rK   rL   rM   r\   rf   rg   r   râ   rÄ   Úwords_and_spacesÚfindallÚstripÚin_word_wrap_pointÚsearchrŠ   ÚSkipNode)r2   rO   rz   ÚtagnameÚtextÚtokenr3   rÜ   r4   Úvisit_literal…  s.   ÿÿzHTMLTranslator.visit_literalc                 C   rQ   )Nrß   rR   rN   r3   r3   r4   Údepart_literal£  s   zHTMLTranslator.depart_literalc                 C   s<   |  d¡r|d |d< | j|dfi | ¡ ¤Ž}|  |¡ d S )NrŒ   zxml:langrW   )ÚhasattrÚemptytagÚnon_default_attributesrZ   )r2   rO   rW   r3   r3   r4   Ú
visit_meta©  s   
zHTMLTranslator.visit_metac                 C   rË   r-   r3   rN   r3   r3   r4   Údepart_meta®  rÍ   zHTMLTranslator.depart_metac                 C   s   | j |ddd� d S )NÚorganizationFrV   )rY   rN   r3   r3   r4   Úvisit_organization²  s   z!HTMLTranslator.visit_organizationc                 C   r_   r-   r`   rN   r3   r3   r4   Údepart_organization´  rc   z"HTMLTranslator.depart_organizationc                 C   s&   |  j d7  _ | j |  |d¡¡ d S )Nr   Úsection)Úsection_levelrK   rL   rM   rN   r3   r3   r4   Úvisit_section¸  s   
ÿzHTMLTranslator.visit_sectionc                 C   s   |  j d8  _ | j d¡ d S )Nr   z</section>
)r   rK   rL   rN   r3   r3   r4   Údepart_section½  s   zHTMLTranslator.depart_sectionc                 C   s"   | j  | j|ddd�¡ d| _d S )NÚasideÚsidebarrt   T)rK   rL   rM   Ú
in_sidebarrN   r3   r3   r4   Úvisit_sidebarÂ  s   ÿ
zHTMLTranslator.visit_sidebarc                 C   s   | j  d¡ d| _d S )Nz	</aside>
F)rK   rL   r  rN   r3   r3   r4   Údepart_sidebarÇ  ó   
zHTMLTranslator.depart_sidebarc                 C   sJ   d|d v rt |jtjƒrd| jd< | j | j|ddd�¡ |d | _d S )NÚcontentsrm   z </head>
<body class="with-toc">
r   rs   Útopicrt   )	rf   rg   r   Údocumentrž   rK   rL   rM   Útopic_classesrN   r3   r3   r4   Úvisit_topicÎ  s   ÿ
zHTMLTranslator.visit_topicc                 C   s   | j  d¡ g | _d S ré   )rK   rL   r  rN   r3   r3   r4   Údepart_topicÕ  r  zHTMLTranslator.depart_topic)0r6   r7   r8   Ú__doc__r˜   rP   rS   r^   rb   ri   rj   Úsetrn   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  Ú__classcell__r3   r3   rÉ   r4   r/       sX    


r/   )r  Ú__docformat__r¿   Úos.pathr=   r;   r   r   r   r   Údocutils.transformsr   Údocutils.writersr   Údocutils.writers._html_baser	   r
   r   r/   r3   r3   r3   r4   Ú<module>   s   y