o
    i                     @  s   d Z ddlmZ dZddlmZ ddlZddlZddlm	Z	m
Z
mZmZ G dd dejZG d	d
 d
ejZG dd de
jZG dd dejjjZdS )zv
Simple document tree Writer, writes Docutils XML according to
https://docutils.sourceforge.io/docs/ref/docutils.dtd.
    )annotationsreStructuredText)StringION)frontendnodeswritersutilsc                   @  s   e Zd ZdS )RawXmlErrorN)__name__
__module____qualname__ r   r   c/var/www/html/karishye-ai-python/venv/lib/python3.10/site-packages/docutils/writers/docutils_xml.pyr	      s    r	   c                   @  s   e Zd ZdZ	 ddddgdejdfdd	gdejdfd
dgdddejdfddgdddejdfffZddiZdZdZ	dZ
	 dddZdddZdS )Writer)xmlz"Docutils XML" Writer OptionsNz1Generate XML with newlines before and after tags.z
--newlines
store_true)action	validatorz'Generate XML with indents and newlines.z	--indentsz,Omit the XML declaration.  Use with caution.z--no-xml-declarationxml_declaration   store_false)destdefaultr   r   zOmit the DOCTYPE declaration.z--no-doctypedoctype_declarationoutput_encoding_error_handlerxmlcharrefreplacezdocutils_xml writer)r   returnNonec                 C  s   t j|  t| _d S N)r   r   __init__XMLTranslatortranslator_class)selfr   r   r   r   9   s   
zWriter.__init__c                 C  s0   |  | j | _}| j| d|j| _d S )N )r!   documentvisitor	walkaboutjoinoutput)r"   r%   r   r   r   	translate=   s   zWriter.translater   r   )r
   r   r   	supportedr   validate_booleansettings_specsettings_defaultsconfig_sectionconfig_section_dependenciesr(   r   r)   r   r   r   r   r      sD    


r   c                   @  s~   e Zd ZdZdZej Z	 e	dd dddZ
ejejejejejfZdd	d
ZdddZdddZdddZdd ZdS )r    z<!DOCTYPE document PUBLIC "+//IDN docutils.sourceforge.net//DTD Docutils Generic//EN//XML" "http://docutils.sourceforge.net/docs/ref/docutils.dtd">
z"<!-- Generated by Docutils %s -->
z5http://xml.org/sax/features/external-general-entitiesTr   r   c                 C  s   t j| | | jjj| _| jjj| _|j | _}d | _	| _
|jr%d| _
|jr.d| _
d| _	d| _d| _d| _g | _|jrG| jt|j |jrQ| j| j | j| jtj  t | _| j| j d S )Nr#   
z    r   )r   NodeVisitorr   r$   reporterwarningwarnerrorsettingsindentnewlinenewlinesindentslevel	in_simple
fixed_textr(   r   appendr   output_encodingr   doctype	generatordocutils__version__TestXml
the_handle	xmlparsersetContentHandler)r"   r$   r7   r   r   r   r   R   s*   zXMLTranslator.__init__c                 C  s   | j s| j| j| j  | j|tjjj	 t
|tjs&|  jd7  _t
|tjtjfr6|  jd7  _t
|| jrC|  j d7  _ | j sO| j| j dS dS )zDefault node visit method.r   N)r=   r(   r?   r8   r<   starttagr   saxsaxutils	quoteattr
isinstancer   InlineFixedTextElementliteralr>   simple_nodesr9   r"   noder   r   r   default_visitw   s   zXMLTranslator.default_visitc                 C  s   t |tjs|  jd8  _| js| j| j| j  | j|  t |tj	tj
fr2|  jd8  _t || jr?|  jd8  _| jsK| j| j dS dS )zDefault node depart method.r   N)rM   r   rN   r<   r=   r(   r?   r8   endtagrO   rP   r>   rQ   r9   rR   r   r   r   default_departure   s   zXMLTranslator.default_departurec                 C  s@   t jj| }| js|dd| j| j  }| j	
| d S )Nr1   )r   rJ   rK   escapeastextr>   replacer8   r<   r(   r?   )r"   rS   textr   r   r   
visit_Text   s   zXMLTranslator.visit_Textc                 C  s   d S r   r   rR   r   r   r   depart_Text   s   zXMLTranslator.depart_Textc                 C  s   d| dd vr| | d S | | | }| j| | | z| jt	| W tj t
jjjyo   | jj }| jj }|j}t|jtjsU|d7 }d||| f }| j||j|| d d Y tjw )Nr   formatr#      z0Invalid raw XML in column %d, line offset %d:
%sr   )sourceline)getsplitrT   rX   r(   r?   rV   rG   parser   r   rJ   _exceptionsSAXParseExceptionrF   locatorgetColumnNumbergetLineNumberr`   rM   parentr   TextElementr5   r_   SkipNode)r"   rS   
xml_stringcol_numline_numsrclinemsgr   r   r   	visit_raw   s,   




zXMLTranslator.visit_rawNr*   )r
   r   r   rA   rB   r   rJ   make_parserrG   
setFeaturer   r   rj   metaimagecolspec
transitionrQ   rT   rV   r[   r\   rq   r   r   r   r   r    C   s$    

"



r    c                   @  s   e Zd ZdddZdS )rE   r   r   c                 C  s
   || _ d S r   )rf   )r"   rf   r   r   r   setDocumentLocator   s   
zTestXml.setDocumentLocatorNr*   )r
   r   r   rx   r   r   r   r   rE      s    rE   )__doc__
__future__r   __docformat__ior   xml.sax.saxutilsr   rC   r   r   r   r   ApplicationErrorr	   r   GenericNodeVisitorr    rJ   handlerContentHandlerrE   r   r   r   r   <module>   s   )y