ó
bõéKc           @   sÇ   d  d l  m Z m Z m Z m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l	 m
 Z
 m Z d  d l m Z i  Z d „  Z d „  Z x0 e e ƒ j j ƒ  D] \ Z Z e e ƒ  e <q¦ Wd S(   iÿÿÿÿ(   t   minidomt   Nodet   XML_NAMESPACEt   XMLNS_NAMESPACEN(   t	   constantst   ihatexml(   t
   namespacesc         C   sb   d |  j  d } | t k r% t | St j | ƒ } t |  ƒ } | j j | ƒ | t | <| Sd  S(   Nt   _t   builder(   t   __name__t   moduleCachet   newt   modulet   getDomBuildert   __dict__t   update(   t   DomImplementationt   namet   modt   objs(    (    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyt   getDomModule   s    
c            s‰   |  ‰ d d
 d „  ƒ  Y‰  d t  j f ‡  ‡ f d †  ƒ  Y‰ d t  j f ‡ ‡ ‡ f d †  ƒ  Y} d „  ‰ i t d 6‡ f d	 † ‰ t ƒ  S(   Nt   AttrListc           B   sG   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         S   s   | |  _  d  S(   N(   t   element(   t   selfR   (    (    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyt   __init__   s    c         S   s   |  j  j j ƒ  j ƒ  S(   N(   R   t
   attributest   itemst   __iter__(   R   (    (    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyR      s    c         S   s   |  j  j | | ƒ d  S(   N(   R   t   setAttribute(   R   R   t   value(    (    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyt   __setitem__   s    c         S   s1   g  |  j  j j ƒ  D] } | d | d f ^ q S(   Ni    i   (   R   R   R   (   R   t   item(    (    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyR   !   s    c         S   s   |  j  j j ƒ  S(   N(   R   R   t   keys(   R   (    (    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyR    $   s    c         S   s   |  j  j | ƒ S(   N(   R   t   getAttribute(   R   R   (    (    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyt   __getitem__&   s    c         S   s,   t  | t ƒ r t ‚ n |  j j | ƒ Sd  S(   N(   t
   isinstancet   tuplet   NotImplementedErrorR   t   hasAttribute(   R   R   (    (    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyt   __contains__)   s    	(	   R	   t
   __module__R   R   R   R   R    R"   R'   (    (    (    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyR      s   						t   NodeBuilderc              s¤   e  Z d  „  Z e d „  ƒ Z d „  Z d d „ Z d „  Z d „  Z	 d „  Z
 ‡  f d †  Z d „  Z e e e ƒ Z ‡ f d	 †  Z d
 „  Z d „  Z e e ƒ Z RS(   c         S   s#   t  j j |  | j ƒ | |  _ d  S(   N(   t   _baseR   R   t   nodeNameR   (   R   R   (    (    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyR   0   s    c         S   s"   t  |  j d ƒ r |  j j p! d  S(   Nt   namespaceURI(   t   hasattrR   R,   t   None(   R   (    (    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyt   <lambda>4   s   c         S   s    |  | _  |  j j | j ƒ d  S(   N(   t   parentR   t   appendChild(   R   t   node(    (    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyR1   7   s    	c         S   sH   |  j  j j | ƒ } | r4 |  j  j | | j  ƒ n |  j  j | ƒ d  S(   N(   R   t   ownerDocumentt   createTextNodet   insertBeforeR1   (   R   t   dataR5   t   text(    (    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyt
   insertText;   s    c         S   s&   |  j  j | j  | j  ƒ |  | _ d  S(   N(   R   R5   R0   (   R   R2   t   refNode(    (    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyR5   B   s    c         S   s8   | j  j |  j  k r+ |  j  j | j  ƒ n  d  | _ d  S(   N(   R   t
   parentNodet   removeChildR.   R0   (   R   R2   (    (    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyR;   F   s    c         S   sO   x? |  j  j ƒ  rA |  j  j } |  j  j | ƒ | j  j | ƒ q Wg  |  _ d  S(   N(   R   t   hasChildNodest
   firstChildR;   R1   t
   childNodes(   R   t	   newParentt   child(    (    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyt   reparentChildrenK   s
    c            s   ˆ  |  j  ƒ S(   N(   R   (   R   (   R   (    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyt   getAttributesR   s    c         S   sœ   | r˜ x | j  ƒ  D]~ \ } } t | t ƒ r~ | d d  k	 rW | d d | d } n
 | d } |  j j | d | | ƒ q |  j j | | ƒ q Wn  d  S(   Ni    t   :i   i   (   R   R#   R$   R.   R   t   setAttributeNSR   (   R   R   R   R   t   qualifiedName(    (    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyt   setAttributesU   s    

	c            s   ˆ  |  j  j t ƒ ƒ S(   N(   R   t	   cloneNodet   False(   R   (   R)   (    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyRG   d   s    c         S   s   |  j  j ƒ  S(   N(   R   R<   (   R   (    (    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyt
   hasContentg   s    c         S   s4   |  j  d  k r  t d |  j f S|  j  |  j f Sd  S(   Nt   html(   t	   namespaceR.   R   R   (   R   (    (    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyt   getNameTuplej   s    N(   R	   R(   R   t   propertyRK   R1   R.   R8   R5   R;   RA   RB   RF   R   RG   RI   RL   t	   nameTuple(    (   R   R)   (    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyR)   /   s   								t   TreeBuilderc              s•   e  Z ‡ f d  †  Z ‡ ‡ f d †  Z d
 ‡ f d † Z ‡ f d †  Z ‡ f d †  Z d „  Z ‡  f d †  Z	 d „  Z
 d „  Z d
 d	 „ Z d
 Z RS(   c            s+   ˆ  j  ƒ  j d  d  d  ƒ |  _ t j |  ƒ S(   N(   t   getDOMImplementationt   createDocumentR.   t   domt   weakreft   proxy(   R   (   t   Dom(    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyt   documentClasss   s    c            st   | d } | d } | d } ˆ  j  ƒ  } | j | | | ƒ } |  j j ˆ | ƒ ƒ ˆ  t k rp |  j | _ n  d  S(   NR   t   publicIdt   systemId(   RP   t   createDocumentTypet   documentR1   R    RR   R3   (   R   t   tokenR   RW   RX   t   domimplt   doctype(   RU   R)   (    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyt   insertDoctypew   s    


c            sO   | d  k r0 |  j d  k r0 |  j j | ƒ } n |  j j | | ƒ } ˆ  | ƒ S(   N(   R.   t   defaultNamespaceRR   t   createElementt   createElementNS(   R   R   RK   R2   (   R)   (    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyt   elementClass‚   s    c            s   ˆ  |  j  j | ƒ ƒ S(   N(   RR   t   createComment(   R   R6   (   R)   (    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyt   commentClassŠ   s    c            s   ˆ  |  j  j ƒ  ƒ S(   N(   RR   t   createDocumentFragment(   R   (   R)   (    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyt   fragmentClass   s    c         S   s   |  j  j | j ƒ d  S(   N(   RR   R1   R   (   R   R2   (    (    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyR1      s    c            s
   ˆ  | ƒ S(   N(    (   R   R   (   t   testSerializer(    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyRg   “   s    c         S   s   |  j  S(   N(   RR   (   R   (    (    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyt   getDocument–   s    c         S   s   t  j j |  ƒ j S(   N(   R*   RO   t   getFragmentR   (   R   (    (    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyRi   ™   s    c         S   s¦   | } | |  k r+ t  j j |  | | ƒ nw t |  j d ƒ r† t j |  j j k r† t |  j j ƒ |  j _ |  j j j	 t j ƒ q† n  |  j j
 |  j j | ƒ ƒ d  S(   Nt   _child_node_types(   R*   RO   R8   R-   RR   R   t	   TEXT_NODERj   t   listt   appendR1   R4   (   R   R6   R0   (    (    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyR8   œ   s    N(   R	   R(   RV   R^   R.   Rb   Rd   Rf   R1   Rg   Rh   Ri   R8   R   (    (   Rg   RU   R)   (    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyRO   r   s   			c            s?   |  j  ƒ  g  ‰  d ‡  ‡ f d † ‰ ˆ |  d ƒ d j ˆ  ƒ S(   Ni    c   
   	      s¢  |  j  t j k r® |  j r“ |  j s- |  j rr |  j p9 d } |  j pH d } ˆ  j d d | |  j | | f ƒ q« ˆ  j d d | |  j f ƒ qsˆ  j d d | f ƒ nÅ|  j  t j k rÐ ˆ  j d ƒ n£|  j  t j k rò ˆ  j d ƒ n|  j  t j	 k r%ˆ  j d d | |  j
 f ƒ nN|  j  t j k rXˆ  j d	 d | |  j
 f ƒ nt |  d
 ƒ r–|  j d  k r–d t j |  j |  j f } n	 |  j } ˆ  j d d | | f ƒ |  j ƒ  rsd } |  j j | ƒ } x’ | ro| j } | j } | j } | r%d t j | | j f } n	 | j } | d 7} |  j j | ƒ } ˆ  j d d | d | | f ƒ qáWn  | d 7} x |  j D] }	 ˆ |	 | ƒ q‡Wd  S(   Nt    s   |%s<!DOCTYPE %s "%s" "%s">t    s   |%s<!DOCTYPE %s>s   |%s<!DOCTYPE >s	   #documents   #document-fragments   |%s<!-- %s -->s   |%s"%s"R,   s   %s %ss   |%s<%s>i    i   s
   |%s%s="%s"i   (   t   nodeTypeR   t   DOCUMENT_TYPE_NODER   RW   RX   Rm   t   DOCUMENT_NODEt   DOCUMENT_FRAGMENT_NODEt   COMMENT_NODEt	   nodeValueRk   R-   R,   R.   R   t   prefixesR+   t   hasAttributesR   R   R   t	   localNameR>   (
   R   t   indentRW   RX   R   t   it   attrR   t   nsR@   (   t   rvt   serializeElement(    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyR~   ­   sN    		!!!						
)
s   
(   t	   normalizet   join(   R   (    (   R}   R~   sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyRg   ª   s
    
.t   xmlc   
         s8  |  j  t j k r€| se | j |  j |  j ƒ x! |  j D] } ˆ  | | | ƒ q8 W| j |  j ƒ q4t |  j j	 ƒ  ƒ } g  } xÃ |  j j
 ƒ  D]² } |  j | ƒ } | j t k sÕ | j d  k r | j j d ƒ r | j d k rí | j pð d  } | j | | j ƒ | j | ƒ | j ƒ  } | j | | <| | j | j f =q q Wxœ |  j j
 ƒ  D]‹ } |  j | ƒ } | j d  k rVd | j k rV| j j d ƒ d } | j | ƒ rá| | j | j f =| j | | | | j f <qáqVqVW|  j pý| j d  d  ƒ }	 | j |	 |  j f |  j | ƒ x! |  j D] } ˆ  | | | ƒ q)W| j |	 |  j f |  j ƒ xÒ | D] } | j | ƒ qfWn´ |  j  t j t j g k r®| j |  j ƒ n† |  j  t j k rû| j ƒ  x! |  j D] } ˆ  | | | ƒ qÔW| j ƒ  n9 |  j  t j  k r4x$ |  j D] } ˆ  | | | ƒ qWn  d  S(   Nt   xmlnsRC   i    (!   Rp   R   t   ELEMENT_NODEt   startElementR+   R   R>   t
   endElementt   dictt   itemsNSR    t   getAttributeNodeR,   R   R.   t
   startswitht   startPrefixMappingRu   Rm   t   copyt   splitt   has_keyt   gett   startElementNSt   endElementNSt   endPrefixMappingRk   t   CDATA_SECTION_NODEt
   charactersRr   t   startDocumentt   endDocumentRs   (
   R2   t   handlert   nsmapR@   R   Rv   t   attrnameR{   t   prefixR|   (   t   dom2sax(    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyRš   ß   sV     !$  
  	(    (   R*   R   RO   R   t   locals(   R   RO   (    (   R   Rg   RU   Rš   R)   sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyR      s    "C%8	5:(   t   xml.domR    R   R   R   R   t   reRS   R*   t   html5libR   R   t   html5lib.constantsR   R
   R   R   R   R   t   keyR   t   globals(    (    (    sX   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/vendor/html5lib/treebuilders/dom.pyt   <module>   s   "		ÿ "