o
    Ni=                     @   sX   d Z dZddlmZ ddlmZmZ ddlmZ G dd dej	Z	G dd	 d	e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    )Path)frontendnodes)
_html_basec                   @   s4  e Zd ZdZ	 ddgZdeeejgZ	eejd Z
ejejjde
 ddge
d	d
fdde dgddejedfdde	 dgdeje	dfddgd dddfddgdddfd Zed!d"ejd#gd$ejd%fejd&gd'ddfd(d)gd*d+ifd,d-gd.d$d/fd0d1gd2ddfff Zd3Zd4d5 Zd6S )7Writer)html5xhtmlhtmlzminimal.cssz	plain.css.ztemplate.txtz)Template file. (UTF-8 encoded, default: "z")z
--templatez<file>)defaultmetavarzComma 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   	overrides	validatorr   zComma-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   zySpecify the initial header level. Does not affect document title & subtitle (see --no-doc-title). (default: 2 for "<h2>")z--initial-header-levelz1 2 3 4 5 62z<level>)choicesr   r   z#Omit the XML declaration (default).z--no-xml-declarationxml_declarationstore_false)destaction)templatestylesheet_pathstylesheet_dirsinitial_header_levelno_xml_declarationzHTML5 Writer Options z--embed-images
store_true)r   r   z--link-imagesembed_imageszUSuggest at which point images should be loaded: "embed", "link" (default), or "lazy".z--image-loadingr   )embedlinklazyz'Append a self-link to section headings.z--section-self-linkF)r   r   z8Do not append a self-link to section headings. (default)z--no-section-self-linksection_self_linkzhtml5 writerc                 C   s   i | _ t| _d S N)partsHTMLTranslatortranslator_classself r*   \/home/ubuntu/.local/lib/python3.10/site-packages/docutils/writers/html5_polyglot/__init__.py__init__k   s   
zWriter.__init__N)__name__
__module____qualname__	supporteddefault_stylesheetsstrr   __file__parentdefault_stylesheet_dirsdefault_templater   filter_settings_specr   r   settings_specjoinvalidate_comma_separated_listsplitSUPPRESS_HELPvalidate_booleanconfig_sectionr,   r*   r*   r*   r+   r   #   s    
	#r   c                       sT  e Zd ZdZddiZ fddZdd Zdd	 Zd
d Zdd Z	dd Z
dd Zddh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h d,Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Z d;d< Z!d=d> Z"d?d@ Z#dAdB Z$dCdD Z%dEdF Z&dGdH Z'dIdJ Z(dKdL Z) fdMdNZ*  Z+S )Or&   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.
    tagnamemainc                    s   t  | | jd d S )NzG<meta name="viewport" content="width=device-width, initial-scale=1" />
)superr,   metaappend)r)   document	__class__r*   r+   r,   ~   s   zHTMLTranslator.__init__c                 C   s   | j | |dd d S )Nabbrr   )bodyrC   starttagr)   noder*   r*   r+   visit_acronym   s   zHTMLTranslator.visit_acronymc                 C      | j d d S )Nz</abbr>rH   rC   rJ   r*   r*   r+   depart_acronym      zHTMLTranslator.depart_acronymc                 C   s<   | j |ddd |D ]}| jd| |  d q
d S )NauthorsFrB   z<meta name="author" content="" />
visit_docinfo_itemrB   rC   attvalastext)r)   rK   subnoder*   r*   r+   visit_authors   s   zHTMLTranslator.visit_authorsc                 C      |    d S r$   depart_docinfo_itemrJ   r*   r*   r+   depart_authors      zHTMLTranslator.depart_authorsc                 C   s4   t |jtjr| jd | j| |dd d S )N<figcaption>
pr   )
isinstancer4   r   figurerH   rC   rI   rJ   r*   r*   r+   visit_caption   s   zHTMLTranslator.visit_captionc                 C   rM   )Nz</p>
rN   rJ   r*   r*   r+   depart_caption   rP   zHTMLTranslator.depart_captioninsdelc                    sd   |d } 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 r*   )supported_block_tags.0clsr(   r*   r+   
<listcomp>   s    
z2HTMLTranslator.visit_container.<locals>.<listcomp>   r   divzdocutils containerCLASS)lenhtml5tagnameremoverH   rC   rI   )r)   rK   rg   tagsr*   r(   r+   visit_container   s   
zHTMLTranslator.visit_containerc                 C      | j d|j d |`d S N</z>
rH   rC   rr   rJ   r*   r*   r+   depart_container      zHTMLTranslator.depart_containerc                 C   2   | j |ddd | jd| |  d d S )N	copyrightFrR   z%<meta name="dcterms.rights" content="rS   rT   rJ   r*   r*   r+   visit_copyright      zHTMLTranslator.visit_copyrightc                 C   rZ   r$   r[   rJ   r*   r*   r+   depart_copyright   r^   zHTMLTranslator.depart_copyrightc                 C   r|   )NdateFrR   z#<meta name="dcterms.date" content="rS   rT   rJ   r*   r*   r+   
visit_date   r   zHTMLTranslator.visit_datec                 C   rZ   r$   r[   rJ   r*   r*   r+   depart_date   r^   zHTMLTranslator.depart_datec                 C   s\   i }| drd|d  |d< | drd|d  |d< | j| j|dfi | d S )Nwidthzwidth: stylealignzalign-classrb   )getrH   rC   rI   r)   rK   attsr*   r*   r+   visit_figure   s   

 zHTMLTranslator.visit_figurec                 C   s(   t |dkr| jd | jd d S )Nrm   z</figcaption>
z
</figure>
)rq   rH   rC   rJ   r*   r*   r+   depart_figure   s   zHTMLTranslator.depart_figurec                 C      | j t| j d S r$   contextrC   rq   rH   rJ   r*   r*   r+   visit_footer      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   poprI   extendrH   rC   r   body_suffix)r)   rK   startr   r*   r*   r+   depart_footer   s   

zHTMLTranslator.depart_footerc                 C   r   r$   r   rJ   r*   r*   r+   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   rI   r   rH   rC   body_prefixr   )r)   rK   r   r   r*   r*   r+   depart_header   s   

zHTMLTranslator.depart_header>   biqsubdirf   dfnre   kbdvarcodemarksampsmallc                    s   |d  d|_ t|jtjrd|jdv s&t|jtjrAt|jdd dkrA dgkr@| jd dkr7| jd= n| j	d d	|_ n fd
d| j
D }t|rZ|d |_  |j  | j	| ||j d d S )Nrg   spanr   rr   lnz<code>z</code>r   c                       g | ]}| v r|qS r*   r*   ri   rg   r*   r+   rl         z/HTMLTranslator.visit_inline.<locals>.<listcomp>r   r   )rr   ra   r4   r   literal_blockr   literalgetattrrH   rC   supported_inline_tagsrq   rs   rI   )r)   rK   rt   r*   r   r+   visit_inline   s$   


zHTMLTranslator.visit_inlinec                 C   s^   | j d|j d |jdkr+|ddgkr+t|jtjr+| j d|  d |`d S )Nrx   >r   rg   r   z<code data-lineno="z">)	rH   rC   rr   r   ra   r4   r   r   rW   rJ   r*   r*   r+   depart_inline  s   zHTMLTranslator.depart_inlinec                 C   s:   t |jd tjs| jd | j| j|ddd d S )Nrm   r_   rn   legendro   )ra   r4   r   captionrH   rC   rI   rJ   r*   r*   r+   visit_legend  s   zHTMLTranslator.visit_legendc                 C   rM   )Nz</div>
rN   rJ   r*   r*   r+   depart_legend  rP   zHTMLTranslator.depart_legendc                    s  |d  d} fdd| j D }t|r|d } | |dkr1||_| j| ||d d S | j| j||ddd	 | }t|j	t
jsO|d
d}| j|D ]#}| ro| j|ro| jd| | d qU| j| | qU| jd| d t
j)Nrg   r   c                    r   r*   r*   ri   r   r*   r+   rl   "  r   z0HTMLTranslator.visit_literal.<locals>.<listcomp>r   r   r   zdocutils literalro   
 z<span class="pre">z</span>rx   r   )r   rq   rs   rr   rH   rC   rI   rW   ra   r4   r   r   replacewords_and_spacesfindallstripin_word_wrap_pointsearchencodeSkipNode)r)   rK   rr   rt   texttokenr*   r   r+   visit_literal  s0   
zHTMLTranslator.visit_literalc                 C   s   |  | d S r$   )r   rJ   r*   r*   r+   depart_literal=  s   zHTMLTranslator.depart_literalc                 C   s:   | dr|d |d< | j| j|dfi |  d S )Nlangzxml:langrB   )hasattrrB   rC   emptytagnon_default_attributesrJ   r*   r*   r+   
visit_metaC  s
   
zHTMLTranslator.visit_metac                 C   s   d S r$   r*   rJ   r*   r*   r+   depart_metaI  s   zHTMLTranslator.depart_metac                 C   s   | j |ddd d S )NorganizationFrR   )rU   rJ   r*   r*   r+   visit_organizationM  s   z!HTMLTranslator.visit_organizationc                 C   rZ   r$   r[   rJ   r*   r*   r+   depart_organizationP  r^   z"HTMLTranslator.depart_organizationc                 C   s&   |  j d7  _ | j| |d d S )Nrm   section)section_levelrH   rC   rI   rJ   r*   r*   r+   visit_sectionT  s   
zHTMLTranslator.visit_sectionc                 C   s   |  j d8  _ | jd d S )Nrm   z</section>
)r   rH   rC   rJ   r*   r*   r+   depart_sectionY  s   zHTMLTranslator.depart_sectionc                 C   s"   | j | j|ddd d| _d S )Nasidesidebarro   T)rH   rC   rI   
in_sidebarrJ   r*   r*   r+   visit_sidebar^  s   
zHTMLTranslator.visit_sidebarc                 C   s   | j d d| _d S )Nz	</aside>
F)rH   rC   r   rJ   r*   r*   r+   depart_sidebarc  s   
zHTMLTranslator.depart_sidebarc                 C   s   ddgi}d|d v r"d|_ |d= t|jtjr!d|d< d| jd< nd	|d v r0d
|_ d|d< nd|d v r>d
|_ d|d< nd|_ | j| j||j fi | d S )Nrg   topiccontentsnavzdoc-tocrolez </head>
<body class="with-toc">
r   abstractrn   zdoc-abstract
dedicationzdoc-dedicationr   )	rr   ra   r4   r   rD   r   rH   rC   rI   r   r*   r*   r+   visit_topicj  s    



"zHTMLTranslator.visit_topicc                 C   rv   rw   ry   rJ   r*   r*   r+   depart_topic|  r{   zHTMLTranslator.depart_topicc                    sb   t  |\}}|jd }|r-t| jdd r-t|jtjs-d|d  d}|d|d }||fS )Nidsr#   z9<a class="self-link" title="link to this section" href="#r   z"></a>z</h)	rA   section_title_tagsr4   r   settingsra   r   rD   r   )r)   rK   	start_tag	close_tagr   	self_linkrE   r*   r+   r     s   
z!HTMLTranslator.section_title_tags),r-   r.   r/   __doc__documenttag_argsr,   rL   rO   rY   r]   rc   rd   rh   ru   rz   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__r*   r*   rE   r+   r&   p   sR    


r&   N)r   __docformat__pathlibr   docutilsr   r   docutils.writersr   r   r&   r*   r*   r*   r+   <module>   s   M