
2!V                 @   s   d  d l  Z  d  d l m Z d  d l m Z d  d l m Z d  d l m Z e  j	 d d  \ Z
 Z Z e
 d k o} e d k Z e
 d k o e d k Z i  Z e r d	 e d
 <n  e r d	 e d <n  Gd d   d e e j j j  Z d S)    N)six)
smart_text)ParserError)
ParserBase         Fstrictconvert_charrefsc               @   s   e  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   Z
 d d   Z d d   Z d S)DefaultHtmlParserc             C   s   t  j j j j |  t  | |  _ g  |  _ g  |  _ d  |  _	 y |  j
 |  j  |  j   Wn] t k
 r } z= | j } |  j j   | } t d | t |  f   WYd  d  } ~ Xn Xd  S)Nz2Error while initializing HtmlParser: %s (line: %s))r   moveshtml_parser
HTMLParser__init__HTML_PARSER_ARGScontent
_css_elems	_js_elems_current_tagfeedclose	Exceptionlineno
splitlinesr   repr)selfr   errr   line r   Q/tmp/pip-build-0sboevxh/django-compressor/compressor/parser/default_htmlparser.pyr      s    					zDefaultHtmlParser.__init__c             C   s   | j    } | d	 k r | d k r0 |  j } n | d k rH |  j } n  | j i | d 6| d 6t |  d 6d d 6 | |  _ nA | d k r |  j j i | d 6| d 6t |  d 6d  d 6 n  d  S)
Nstylescripttagattrs
attrs_dict textlink)zstylezscript)lowerr   r   appenddictr   )r   r"   r#   tagsr   r   r   handle_starttag*   s$    	z!DefaultHtmlParser.handle_starttagc             C   s.   |  j  r* |  j  | j   k r* d  |  _  n  d  S)N)r   r(   )r   r"   r   r   r   handle_endtag@   s    zDefaultHtmlParser.handle_endtagc             C   sJ   |  j  d k r# | |  j d d <n# |  j  d k rF | |  j d d <n  d  S)Nr       r&   r!   r/   )r   r   r   )r   datar   r   r   handle_dataD   s    zDefaultHtmlParser.handle_datac             C   s   |  j  S)N)r   )r   r   r   r   	css_elemsJ   s    zDefaultHtmlParser.css_elemsc             C   s   |  j  S)N)r   )r   r   r   r   js_elemsM   s    zDefaultHtmlParser.js_elemsc             C   s   | d S)Nr"   r   )r   elemr   r   r   	elem_nameP   s    zDefaultHtmlParser.elem_namec             C   s   | d S)Nr$   r   )r   r4   r   r   r   elem_attribsS   s    zDefaultHtmlParser.elem_attribsc             C   s   t  | d  S)Nr&   )r   )r   r4   r   r   r   elem_contentV   s    zDefaultHtmlParser.elem_contentc             C   s|   i  } | j  |  d | d <t | d  rX d d j d d   | d D  | d <n  | d d k rp d	 | Sd
 | Sd  S)Nr%   r#   z %s c             S   s&   g  |  ] \ } } d  | | f  q S)z%s="%s"r   ).0namevaluer   r   r   
<listcomp>^   s   	 z.DefaultHtmlParser.elem_str.<locals>.<listcomp>r"   r'   z<%(tag)s%(attrs)s />z$<%(tag)s%(attrs)s>%(text)s</%(tag)s>)updatelenjoin)r   r4   r"   r   r   r   elem_strY   s    
+zDefaultHtmlParser.elem_strN)__name__
__module____qualname__r   r,   r-   r1   r2   r3   r5   r6   r7   r@   r   r   r   r   r      s   r   )sysZdjango.utilsr   Zdjango.utils.encodingr   Zcompressor.exceptionsr   Zcompressor.parserr   version_infomajorminorreleaseZCONSTRUCTOR_TAKES_STRICTZ"CONSTRUCTOR_TAKES_CONVERT_CHARREFSr   r   r   r   r   r   r   r   r   <module>   s   
