U
    >Ke                     @   s   d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dl	Z
zd dlmZ W n  ek
rp   d dlmZ Y nX dZG dd	 d	ejZd
d Zdd Zedkrd dlZeejd Ze D ]Zeded ed f  qdS )    )print_functionN)make_parser)handler)InputSource)StringIOz2urn:oasis:names:tc:opendocument:xmlns:manifest:1.0c                   @   sZ   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
dddZdd ZdS )ODFManifestHandlerzV The ODFManifestHandler parses a manifest file and produces a list of
        content c                 C   s    i | _ tdf| j| jfi| _d S )Nz
file-entry)manifest
MANIFESTNSs_file_entry	donothingelements)self r   3/tmp/pip-unpacked-wheel-awqfhqe2/odf/odfmanifest.py__init__-   s     
zODFManifestHandler.__init__c                 C   s   ||| d S Nr   )r   tagmethodattrsr   r   r   handle_starttag6   s    z"ODFManifestHandler.handle_starttagc                 C   s   || d S r   r   )r   r   r   r   r   r   handle_endtag9   s    z ODFManifestHandler.handle_endtagc                 C   s6   | j |dd }|r&| ||| n| || d S )NNNr   )r   getr   unknown_starttag)r   r   qnamer   r   r   r   r   startElementNS<   s    z!ODFManifestHandler.startElementNSc                 C   s2   | j |dd }|r$| || n
| | d S )Nr      )r   r   r   unknown_endtag)r   r   r   r   r   r   r   endElementNSC   s    zODFManifestHandler.endElementNSc                 C   s   d S r   r   r   r   r   r   r   r   r   J   s    z#ODFManifestHandler.unknown_starttagc                 C   s   d S r   r   )r   r   r   r   r   r   M   s    z!ODFManifestHandler.unknown_endtagNc                 C   s   d S r   r   r   r   r   r   r   P   s    zODFManifestHandler.donothingc                 C   s2   | tdfd}| tdf}||d| j|< d S )N
media-typezapplication/octet-stream	full-path)r    r!   )r   r	   r   )r   r   r   mpr   r   r   r
   S   s    zODFManifestHandler.s_file_entry)N)__name__
__module____qualname____doc__r   r   r   r   r   r   r   r   r
   r   r   r   r   r   )   s   	
r   c                 C   sj   t  }t }|tjd || |t  t }t	| t
sL| d} |t|  || |jS )Nr   zutf-8)r   r   
setFeaturer   feature_namespacessetContentHandlersetErrorHandlerErrorHandlerr   
isinstancestrdecodesetByteStreamr   parser   )ZmanifestxmlZ	odhandlerparserinpsrcr   r   r   manifestlist_   s    



r4   c                 C   s$   t | }|d}|  t|S )NzMETA-INF/manifest.xml)zipfileZipFilereadcloser4   )Zodtfilezr   r   r   r   odfmanifestn   s    

r:   __main__r   z%-40s %-40sr    r!   )
__future__r   r5   Zdefusedxml.saxr   Zxml.saxr   Zxml.sax.xmlreaderr   xml.sax.saxutilsxml	cStringIOr   ImportErrorior	   ContentHandlerr   r4   r:   r$   sysargvresultvaluesfileprintr   r   r   r   <module>   s$   6