B “äî\ÿã@s®dZdZddlZddlZdejdkr0ej ¡ddlZddlmZddl Z ddl m Z m Z m Z Gdd„de j ƒZGd d „d e jƒZGd d „d e jƒZGd d„dejjƒZdS)zv Simple document tree Writer, writes Docutils XML according to http://docutils.sourceforge.net/docs/ref/docutils.dtd. ZreStructuredTextéNZ_xmlplus)ÚStringIO)ÚfrontendÚwritersÚnodesc@s eZdZdS)Ú RawXmlErrorN)Ú__name__Ú __module__Ú __qualname__©r r úA/tmp/pip-build-uw_ogi45/docutils/docutils/writers/docutils_xml.pyr"src @sŽeZdZdZddddgdejdœfdd gdejdœfd d gd d dejdœfddgdd dejdœfffZddiZdZdZ dZ dd„Z dd„Z 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-declarationÚxml_declarationéÚ store_false)ÚdestÚdefaultrrzOmit the DOCTYPE declaration.z --no-doctypeÚdoctype_declarationZoutput_encoding_error_handlerÚxmlcharrefreplacezdocutils_xml writer)rcCstj |¡t|_dS)N)rr Ú__init__Ú XMLTranslatorÚtranslator_class)Úselfr r r rDs zWriter.__init__cCs0| |j¡|_}|j |¡d |j¡|_dS)NÚ)rÚdocumentÚvisitorZ walkaboutÚjoinÚoutput)rrr r r Ú translateHs zWriter.translate) rrr Ú supportedrZvalidate_booleanZ settings_specZsettings_defaultsZconfig_sectionZconfig_section_dependenciesr rr!r r r r r %s.   r c@sreZdZdZdZdZej ¡Z e   dd¡dd„Z e j e je je jfZdd „Zd d „Zd d „Zdd„Zdd„ZdS)rz$ z” z" z5http://xml.org/sax/features/external-general-entitiesTcCsÐtj ||¡|jjj|_|jjj|_|j|_}d|_ |_ |j rJd|_ |j r\d|_ d|_ d|_ d|_d|_g|_|jrŽ|j |j|j¡|jr¢|j |j¡|j |jtj¡tƒ|_|j |j¡dS)NrÚ z r)rZ NodeVisitorrrZreporterÚwarningÚwarnÚerrorÚsettingsÚindentÚnewlineÚnewlinesÚindentsÚlevelÚ in_simpleÚ fixed_textr rÚappendZoutput_encodingrÚdoctypeÚ generatorÚdocutilsÚ __version__ÚTestXmlÚ the_handleÚ xmlparserÚsetContentHandler)rrr'r r r r^s,    zXMLTranslator.__init__cCs’|js|j |j|j¡|j | tjjj ¡¡|jd7_t |t j t j fƒr`|jd7_t ||jƒrz|jd7_|jsŽ|j |j¡dS)zDefault node visit method.rN)r-r r/r(r,Zstarttagr ÚsaxÚsaxutilsÚ quoteattrÚ isinstancerÚFixedTextElementÚliteralr.Ú simple_nodesr))rÚnoder r r Ú default_visit„s zXMLTranslator.default_visitcCsŠ|jd8_|js(|j |j|j¡|j | ¡¡t|tjtj fƒrX|j d8_ t||j ƒrr|jd8_|js†|j |j ¡dS)zDefault node depart method.rN) r,r-r r/r(Zendtagr;rr<r=r.r>r))rr?r r r Údefault_departure’s zXMLTranslator.default_departurecCs@tjj | ¡¡}|js0| dd|j|j¡}|j   |¡dS)Nr#) r r8r9ÚescapeÚastextr.Úreplacer(r,r r/)rr?Útextr r r Ú visit_Text£szXMLTranslator.visit_TextcCsdS)Nr )rr?r r r Ú depart_TextªszXMLTranslator.depart_Textc Csd| dd¡ ¡kr"| |¡dS| |¡| ¡}|j |¡| |¡t|tƒrht j dkrh|  d¡}y|j   t|ƒ¡WnŠtjjjk r}zd|jj ¡}|jj ¡}|j}t|jtjƒsÊ|d7}d||| ¡f}|j||j||dd Wdd}~XYnXtj‚dS) Nr Úformatr)éÚutf8éz0Invalid raw XML in column %d, line offset %d: %sr)ÚsourceÚline)ÚgetÚsplitr@rCr r/rAr;ÚstrÚsysÚ version_infoÚencoder6Úparserr r8Ú _exceptionsÚSAXParseExceptionr5ÚlocatorÚgetColumnNumberÚ getLineNumberrMÚparentrÚ TextElementr%rLZSkipNode)rr?Z xml_stringr&Zcol_numÚline_numZsrclineÚmsgr r r Ú visit_raw­s*       ,zXMLTranslator.visit_rawN)rrr rr0r1r r8Ú make_parserr6Ú setFeaturerrr[ÚimageZcolspecZ transitionr>r@rArFrGr^r r r r rNs #rc@seZdZdd„ZdS)r4cCs ||_dS)N)rW)rrWr r r ÚsetDocumentLocatorËszTestXml.setDocumentLocatorN)rrr rbr r r r r4Ésr4)Ú__doc__Z __docformat__rQr Ú__path__ÚreverseÚxml.sax.saxutilsÚiorr2rrrZApplicationErrorrr ZGenericNodeVisitorrr8ÚContentHandlerr4r r r r Ú s   ){