
    Ki                       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ej                        Z G d	 d
ej                        Z G d de
j                         Z G d dej$                  j&                  j(                        Zy)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                      e Zd Zy)RawXmlErrorN)__name__
__module____qualname__     i/home/jay/workspace/scripts/.codegraph-venv/lib/python3.12/site-packages/docutils/writers/docutils_xml.pyr   r      s    r   r   c                      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ZddZy)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   c                X    t         j                  j                  |        t        | _        y N)r   r   __init__XMLTranslatortranslator_class)selfs    r   r"   zWriter.__init__9   s    % -r   c                    | j                  | j                        x| _        }| j                  j                  |       dj	                  |j
                        | _        y )N )r$   documentvisitor	walkaboutjoinoutput)r%   r)   s     r   	translatezWriter.translate=   sC    !%!6!6t}}!EEw(gggnn-r   returnNone)r   r   r   	supportedr   validate_booleansettings_specsettings_defaultsconfig_sectionconfig_section_dependenciesr,   r"   r-   r   r   r   r   r      s    I' 	(
=.!0I0I
J
L 4-!0I0I
J
L 9!
"$m 113
4 *
(Q"1J1JL
M	OPM$ 9:MN*N".F...r   r   c                     e Zd ZdZdZej                  j                         Z	 ej                  dd       ddZ
ej                  ej                  ej                  ej                  ej                   fZddZddZddZdd	Zd
 Zy)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-entitiesTc                j   t         j                  j                  | |       | j                  j                  j
                  | _        | j                  j                  j                  | _        |j                  x| _        }dx| _	        | _
        |j                  rd| _
        |j                  rd| _
        d| _	        d| _        d| _        d| _        g | _        |j"                  r8| j                   j%                  t'        j"                  |j(                               |j*                  r%| j                   j%                  | j,                         | j                   j%                  | j.                  t0        j2                  z         t5               | _        | j8                  j;                  | j6                         y )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(   r?   s      r   r"   zXMLTranslator.__init__R   s<   ""42 MM**22	]]++11
 $,#4#44%''dlDLDL DK
 ##KKu44X5M5MNO''KKt||,4>>H,@,@@A ")((9r   c                   | j                   s2| j                  j                  | j                  | j                  z         | j                  j                  |j                  t        j                  j                  j                               t        |t        j                        s| xj                  dz  c_        t        |t        j                  t        j                  f      r| xj                  dz  c_        t        || j                         r| xj                   dz  c_         | j                   s&| j                  j                  | j"                         yy)zDefault node visit method.r   N)rE   r,   rG   r@   rD   starttagr   saxsaxutils	quoteattr
isinstancer   InlineFixedTextElementliteralrF   simple_nodesrA   r%   nodes     r   default_visitzXMLTranslator.default_visitw   s    ~~KKt{{4::564==)9)9)C)CDE$-JJ!OJ dU33U]]CDOOq OdD--.NNaN~~KKt||, r   c                h   t        |t        j                        s| xj                  dz  c_        | j                  s2| j
                  j                  | j                  | j                  z         | j
                  j                  |j                                t        |t        j                  t        j                  f      r| xj                  dz  c_        t        || j                        r| xj                  dz  c_        | j                  s&| j
                  j                  | j                         yy)zDefault node depart method.r   N)rV   r   rW   rD   rE   r,   rG   r@   endtagrX   rY   rF   rZ   rA   r[   s     r   default_departurezXMLTranslator.default_departure   s    $-JJ!OJ~~KKt{{4::564;;=)dU33U]]CDOOq OdD--.NNaN~~KKt||, r   c                   t         j                  j                  j                  |j	                               }| j
                  s,|j                  dd| j                  | j                  z  z         }| j                  j                  |       y )Nr9   )r   rS   rT   escapeastextrF   replacer@   rD   r,   rG   )r%   r\   texts      r   
visit_TextzXMLTranslator.visit_Text   s]    ww&&t{{}5<<d4;;tzz+A&ABD4 r   c                     y r!   r   r[   s     r   depart_TextzXMLTranslator.depart_Text   s    r   c                T   d|j                  dd      j                         vr| j                  |       y | j                  |       |j                         }| j                  j                  |       | j                  |       	 | j                  j                  t        |             t*        j2                  # t        j                  j                  j                  $ r | j                  j                  j!                         }| j                  j                  j#                         }|j$                  }t'        |j(                  t*        j,                        s|dz  }d|||j                         fz  }| j/                  ||j0                  ||z   dz
         Y t*        j2                  w xY w)Nr   formatr'      z0Invalid raw XML in column %d, line offset %d:
%sr   )sourceline)getsplitr]   rc   r,   rG   r`   rO   parser   r   rS   _exceptionsSAXParseExceptionrN   locatorgetColumnNumbergetLineNumberrm   rV   parentr   TextElementr=   rl   SkipNode)r%   r\   
xml_stringcol_numline_numsrclinemsgs          r   	visit_rawzXMLTranslator.visit_raw   sS   2.4466 t$4 [[]
:&t$
	HNN  *!56 nn ww""44 	Hoo--==?G..<<>HiiGdkk5+<+<=1EHdkkmI5 5CIIc$++GH4DQ4FIGnn	Hs   $B7 7CF'&F'Nr.   )r   r   r   rI   rJ   r   rS   make_parserrO   
setFeaturer"   r   rw   metaimagecolspec
transitionrZ   r]   r`   rf   rh   r~   r   r   r   r#   r#   C   s    
	F  6I##%I7?G:D %%uzzKK0@0@BL- -"!r   r#   c                      e Zd ZddZy)rM   c                    || _         y r!   )rs   )r%   rs   s     r   setDocumentLocatorzTestXml.setDocumentLocator   s	    r   Nr.   )r   r   r   r   r   r   r   rM   rM      s    r   rM   )__doc__
__future__r   __docformat__ior   xml.sax.saxutilsr   rK   r   r   r   r	   ApplicationErrorr   r   GenericNodeVisitorr#   rS   handlerContentHandlerrM   r   r   r   <module>r      su   
 #"    4 4	(++ 	&.W^^ &.RvE,, vrcggoo,, r   