o ?]@sdZdZddlZddlZddlZddlmZmZmZej dkr&ddl m Z nddl m Z ej dkr3e Z GdddejZGd d d ejZGd d d ejZGd ddejjjZdS)zv Simple document tree Writer, writes Docutils XML according to http://docutils.sourceforge.net/docs/ref/docutils.dtd. reStructuredTextN)frontendwritersnodesr)StringIOc@s eZdZdS) RawXmlErrorN)__name__ __module__ __qualname__r r ?/usr/lib/python3/dist-packages/docutils/writers/docutils_xml.pyr s r c @seZdZdZ ddddgdejdfdd gdejdfd d gd d dejdfddgdd dejdfffZddiZdZdZ dZ ddZ ddZ dS)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-declarationxml_declaration store_false)destdefaultrrzOmit the DOCTYPE declaration.z --no-doctypedoctype_declarationoutput_encoding_error_handlerxmlcharrefreplacezdocutils_xml writer)rcCstj|t|_dSN)rr__init__ XMLTranslatortranslator_class)selfr r rr?s  zWriter.__init__cCs0||j|_}|j|d|j|_dS)N)rdocumentvisitor walkaboutjoinoutput)r r#r r r translateCs zWriter.translate) r r r supportedrvalidate_boolean settings_specsettings_defaultsconfig_sectionconfig_section_dependenciesr&rr'r r r rr sD   rc@steZdZdZdZdZejZ e ddddZ e j e je je jfZdd Zd d Zd d ZddZddZdS)rz$ z z" z5http://xml.org/sax/features/external-general-entitiesTcCstj|||jjj|_|jjj|_|j|_}d|_ |_ |j r%d|_ |j r.d|_ d|_ d|_ d|_d|_g|_|jrG|j|j|j|jrQ|j|j|j|jtjt|_|j|jdS)Nr! z r)r NodeVisitorrr"reporterwarningwarnerrorsettingsindentnewlinenewlinesindentslevel in_simple fixed_textr&rappendoutput_encodingrdoctype generatordocutils __version__TestXml the_handle xmlparsersetContentHandler)r r"r4r r rrYs.     zXMLTranslator.__init__cCs|js |j|j|j|j|tjjj |jd7_t |t j t j fr0|jd7_t ||jr=|jd7_|jsI|j|jdSdS)zDefault node visit method.rN)r:r&r<r5r9starttagrsaxsaxutils quoteattr isinstancerFixedTextElementliteralr; simple_nodesr6r noder r r default_visits zXMLTranslator.default_visitcCs|jd8_|js|j|j|j|j|t|tjtj fr,|j d8_ t||j r9|jd8_|jsE|j|j dSdS)zDefault node depart method.rN) r9r:r&r<r5endtagrJrrKrLr;rMr6rNr r rdefault_departures zXMLTranslator.default_departurecCs@tjj|}|js|dd|j|j}|j |dS)Nr.) rrGrHescapeastextr;replacer5r9r&r<)r rOtextr r r visit_TextszXMLTranslator.visit_TextcCsdSrr rNr r r depart_TextszXMLTranslator.depart_Textc Csd|ddvr||dS|||}|j|||t|tr4t j dkr4| d}z |j t|Wtjtjjjy}z8|jj}|jj}|j}t|jtjse|d7}d|||f}|j||j||dd WYd}~tjd}~ww) Nrformatr!rutf8z0Invalid raw XML in column %d, line offset %d: %sr)sourceline)getsplitrPrTr&r<rRrJunicodesys version_infoencoderDparserrrG _exceptionsSAXParseExceptionrClocatorgetColumnNumber getLineNumberr]parentr TextElementr2r\SkipNode)r rO xml_stringr3col_numline_numsrclinemsgr r r visit_raws2         $zXMLTranslator.visit_rawN)r r r rr>r?rrG make_parserrD setFeaturerrrkimagecolspec transitionrMrPrRrWrXrrr r r rrIs& #  rc@seZdZddZdS)rBcCs ||_dSr)rg)r rgr r rsetDocumentLocators zTestXml.setDocumentLocatorN)r r r rxr r r rrBs rB)__doc__ __docformat__raxml.sax.saxutilsrr@rrrrbiorstrr`ApplicationErrorr rGenericNodeVisitorrrGhandlerContentHandlerrBr r r rs   ){