Warning: session_start(): Session cannot be started after headers have already been sent in /home/tvrreohg/public_html/manga.php on line 13
3 ¹'¾YL!ã@s‚dZddlmZddlmZddlmZmZddlmZm Z Gdd„dej ƒZ dd „Z Gd d „d eƒZ Gd d „d eƒZdd„ZdS)aI SAX-based adapter to copy trees from/to the Python standard library. Use the `ElementTreeContentHandler` class to build an ElementTree from SAX events. Use the `ElementTreeProducer` class or the `saxify()` function to fire the SAX events of an ElementTree against a SAX ContentHandler. See http://codespeak.net/lxml/sax.html é)ÚContentHandler)Úetree)Ú ElementTreeÚ SubElement)ÚCommentÚProcessingInstructionc@seZdZdZdS)ÚSaxErrorzGeneral SAX error. N)Ú__name__Ú __module__Ú __qualname__Ú__doc__©r r ú/usr/lib64/python3.6/sax.pyrsrcCs0|ddkr$t|dd…jddƒƒSd|fSdS)Nrú{éú})ÚtupleÚsplit)Útagr r rÚ _getNsTags rc@s˜eZdZdZd dd„Zdd„Zeeejd�Zdd „Zd d „Z d d „Z dd„Z dd„Z dd„Z d!dd„Zdd„Zdd„Zd"dd„Zdd„Zdd„ZeZdS)#ÚElementTreeContentHandlerz/Build an lxml ElementTree from SAX events. NcCsLtj|ƒd|_g|_g|_d|_ddgi|_i|_|dkrBtj }||_ dS)N) rÚ__init__Ú_rootÚ_root_siblingsÚ_element_stackÚ _default_nsÚ _ns_mappingÚ _new_mappingsrZElementÚ _makeelement)ÚselfZ makeelementr r rr"s  z"ElementTreeContentHandler.__init__cCs t|jƒS)z=Contains the generated ElementTree after parsing is finished.)rr)rr r rÚ _get_etree.sz$ElementTreeContentHandler._get_etree)ÚdoccCsdS)Nr )rZlocatorr r rÚsetDocumentLocator4sz,ElementTreeContentHandler.setDocumentLocatorcCsdS)Nr )rr r rÚ startDocument7sz'ElementTreeContentHandler.startDocumentcCsdS)Nr )rr r rÚ endDocument:sz%ElementTreeContentHandler.endDocumentc CsR||j|<y|j|j|ƒWn tk r>|g|j|<YnX|dkrN||_dS)N)rrÚappendÚKeyErrorr)rÚprefixÚurir r rÚstartPrefixMapping=s z,ElementTreeContentHandler.startPrefixMappingcCs(|j|}|jƒ|dkr$|d|_dS)Nréÿÿÿÿ)rÚpopr)rr'Z ns_uri_listr r rÚendPrefixMappingFs z*ElementTreeContentHandler.endPrefixMappingcCs4|\}}|rd|}n|jr,d|j|f}n|}|S)Nz{%s}%s)r)rZ ns_name_tupleÚns_uriÚ local_nameÚel_tagr r rÚ _buildTagLs z#ElementTreeContentHandler._buildTagc Cs|j|ƒ}|rri}y |jƒ}Wntk r:|jƒ}YnXx8|D]*\}}|dr\d|} n|d} ||| <qBWnd}|j} |jdkrÔ|j|||jƒ} |_|jrÆt | dƒrÆx|jD]} | j | ƒq´W|jdd…=nt | d|||jƒ} | j | ƒ|jj ƒdS)Nrz{%s}%srÚ addpreviousr*)r0Z iteritemsÚAttributeErrorÚitemsrrrrrÚhasattrr1rr%Úclear) rÚns_nameÚqnameÚ attributesZel_nameZattrsZiter_attributesZ name_tupleÚvalueZ attr_nameZ element_stackÚelementÚsiblingr r rÚstartElementNSVs0        z(ElementTreeContentHandler.startElementNScCs6t||ƒ}|jdkr"|jj|ƒn|jdj|ƒdS)Nrr*)rrrr%r)rÚtargetÚdataZpir r rÚprocessingInstructionws  z/ElementTreeContentHandler.processingInstructioncCs.|jjƒ}|j|ƒ}||jkr*td|ƒ‚dS)NzUnexpected element closed: )rr+r0rr)rr6r7r:r/r r rÚ endElementNS~s   z&ElementTreeContentHandler.endElementNScCs0|rtdd„|jƒDƒƒ}|jd|f||ƒdS)NcSsg|]\}}d|f|f‘qS)Nr )Ú.0ÚkÚvr r rú ‡sz:ElementTreeContentHandler.startElement..)Údictr3r<)rÚnamer8r r rÚ startElement„sz&ElementTreeContentHandler.startElementcCs|jd|f|ƒdS)N)r@)rrFr r rÚ endElement‹sz$ElementTreeContentHandler.endElementc CsP|jd}y|d}|jpd||_Wn$tk rJ|jp>d||_YnXdS)NrÚr*r*)rÚtailÚ IndexErrorÚtext)rr>Z last_elementr r rÚ charactersŽs  z$ElementTreeContentHandler.characters)N)N)N)r r r r rr Úpropertyrr"r#r$r)r,r0r<r?r@rGrHrMZignorableWhitespacer r r rrs"   !  rc@s0eZdZdZdd„Zdd„Zdd„Zdd „Zd S) ÚElementTreeProducerz5Produces SAX events for an element and children. c CsTy |jƒ}Wntk r$|}YnX||_||_ddlm}||_|iiƒ|_dS)Nr)ÚAttributesNSImpl)Zgetrootr2Ú_elementÚ_content_handlerZxml.sax.xmlreaderrPÚ _attr_classÚ_empty_attributes)rÚelement_or_treeÚcontent_handlerr:Z attr_classr r rržs   zElementTreeProducer.__init__cCsÈ|jjƒ|j}t|dƒrrg}|jƒ}x&t|ddƒtkrL|j|ƒ|jƒ}q(Wx"|ddd…D]}|j|iƒq^W|j|iƒt|dƒrº|j ƒ}x(t|ddƒtkr¸|j|iƒ|j ƒ}q’W|jj ƒdS)NÚ getpreviousrrÚgetnextr*) rRr#rQr4rWÚgetattrrr%Ú_recursive_saxifyrXr$)rr:Zsiblingsr;r r rÚsaxify©s"        zElementTreeProducer.saxifycCsx|j}|j}|tks|tkrJ|tkr4|j|j|jƒ|jrF|j|jƒdSg}|j }|j ƒ}|r²i}i} x:|D]2\} } t | ƒ} | || <|| d| d||ƒ| | <qnW|j || ƒ} n|j } t |ƒ\}}|||||ƒ}x|D]\}}|j||ƒqØW|j||f|| ƒ|j�r|j|jƒx|D]}|j||ƒ�qW|j||f|ƒx|D]\}}|j|ƒ�qHW|j�rt|j|jƒdS)Nrr)rRrrrr?r=rLrJrMÚ _build_qnamer3rrSrTr)r<rZr@r,)rr:ÚprefixesrVrÚ new_prefixesZ build_qnameZattribsZ attr_valuesZ attr_qnamesZ attr_ns_namer9Z attr_ns_tupleZsax_attributesr-r.r7r'r(Zchildr r rrZÀsJ      z%ElementTreeProducer._recursive_saxifyc Cs\|dkr |Sy ||}Wn6tk rNdt|ƒ}||<|j||fƒYnX|d|S)Nzns%02dú:)r&Úlenr%)rr-r.r]r^r'r r rr\ës z ElementTreeProducer._build_qnameN)r r r r rr[rZr\r r r rrO›s  +rOcCst||ƒjƒS)zlOne-shot helper to generate SAX events from an XML tree and fire them against a SAX ContentHandler. )rOr[)rUrVr r rr[õsr[N)r Zxml.sax.handlerrZlxmlrZ lxml.etreerrrrZ LxmlErrorrrrÚobjectrOr[r r r rÚ s  |Z