
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>

J\[c           @   s[  d  g Z  d d l Z d d l Z d d l m Z m Z m Z m Z d d l m	 Z	 m
 Z
 d d l Z d d l m Z m Z d d l m Z m Z m Z m Z y d d l m Z e Z Wn) e k
 r Z d d l m Z e Z n Xd  e f d	     YZ d
 e j f d     YZ d e f d     YZ  d e j! f d     YZ" d e" f d     YZ# d S(   t   HTML5TreeBuilderiN(   t
   PERMISSIVEt   HTMLt   HTML_5t   HTMLTreeBuilder(   t   NamespacedAttributet   whitespace_re(   t
   namespacest   prefixes(   t   Commentt   Doctypet   NavigableStringt   Tag(   t   _base(   t   basec           B   sP   e  Z d  Z d Z e e e e g Z d d d  Z	 d   Z
 d   Z d   Z RS(   s   Use html5lib to build a tree.t   html5libc         c   s4   | |  _  | r t j d  n  | d  d  t f Vd  S(   Nsj   You provided a value for exclude_encoding, but the html5lib tree builder doesn't support exclude_encoding.(   t   user_specified_encodingt   warningst   warnt   Nonet   False(   t   selft   markupR   t   document_declared_encodingt   exclude_encodings(    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyt   prepare_markup0   s    	c         C   s   |  j  j d  k	 r" t j d  n  t j d |  j  } t   } t	 | t
  su t re |  j | d <qu |  j | d <n  | j | |  } t	 | t
  r d  | _ n7 | j j j d } t	 | t  s | j } n  | | _ d  S(   Ns   You provided a value for parse_only, but the html5lib tree builder doesn't support parse_only. The entire document will be parsed.t   treet   override_encodingt   encodingi    (   t   soupt
   parse_onlyR   R   R   R   t
   HTMLParsert   create_treebuildert   dictt
   isinstancet   unicodet   new_html5libR   t   parset   original_encodingt	   tokenizert   streamt   charEncodingt
   basestringt   name(   R   R   t   parsert   extra_kwargst   docR&   (    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyt   feed=   s    	c         C   s   t  | |  j  |  _ |  j S(   N(   t   TreeBuilderForHtml5libR   t   underlying_builder(   R   t   namespaceHTMLElements(    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyR    X   s    c         C   s   d | S(   s   See `TreeBuilder`.u)   <html><head></head><body>%s</body></html>(    (   R   t   fragment(    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyt   test_fragment_to_document]   s    N(   t   __name__t
   __module__t   __doc__t   NAMER   R   R   t   featuresR   R   R/   R    R4   (    (    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyR    )   s   		R0   c           B   se   e  Z d
 d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d   Z d	   Z RS(   c         C   sN   | r | |  _  n" d d l m } | d d  |  _  t t |   j |  d  S(   Ni(   t   BeautifulSoupt    s   html.parser(   R   t   bs4R:   t   superR0   t   __init__(   R   R2   R   R:   (    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyR>   d   s
    c         C   s#   |  j  j   t |  j  |  j  d   S(   N(   R   t   resett   ElementR   (   R   (    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyt   documentClassl   s    c         C   sG   | d } | d } | d } t  j | | |  } |  j j |  d  S(   NR+   t   publicIdt   systemId(   R
   t   for_name_and_idsR   t   object_was_parsed(   R   t   tokenR+   RB   RC   t   doctype(    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyt   insertDoctypep   s
    


c         C   s(   |  j  j | |  } t | |  j  |  S(   N(   R   t   new_tagR@   (   R   R+   t	   namespacet   tag(    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyt   elementClassx   s    c         C   s   t  t |  |  j  S(   N(   t   TextNodeR	   R   (   R   t   data(    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyt   commentClass|   s    c         C   sD   d d l  m } | d d  |  _ d |  j _ t |  j |  j d   S(   Ni(   R:   R;   s   html.parsers   [document_fragment](   R<   R:   R   R+   R@   R   (   R   R:   (    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyt   fragmentClass   s    c         C   s   |  j  j | j  d  S(   N(   R   t   appendt   element(   R   t   node(    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyt   appendChild   s    c         C   s   |  j  S(   N(   R   (   R   (    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyt   getDocument   s    c         C   s   t  j j |   j S(   N(   t   treebuilder_baset   TreeBuildert   getFragmentRR   (   R   (    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyRX      s    c            sZ   d d l  m   g   t j d   d      f d    | d  d j   S(   Ni(   R:   s8   ^(.*?)(?: PUBLIC "(.*?)"(?: "(.*?)")?| SYSTEM "(.*?)")?$i    c   	         s  t  |     r n  t  |  t  r  j |   } | r | j d  } | j d k r | j d  pf d } | j d  p | j d  p d }  j d d | | | | f  q  j d d | | f  q j d	 d | f  nt  |  t  r j d
 d | |  f  nst  |  t  rD j d d | |  f  nF|  j rjd t	 |  j |  j
 f } n	 |  j
 }  j d d | | f  |  j r_g  } x} |  j j   D]l \ } } t  | t  rd t	 | j | j
 f } n  t  | t  rd j |  } n  | j | | f  qWx? t |  D]. \ } }  j d d | d | | f  q*Wn  | d 7} x |  j D] }  | |  qsWd  S(   Ni   i   R;   i   i   s   |%s<!DOCTYPE %s "%s" "%s">t    s   |%s<!DOCTYPE %s>s   |%s<!DOCTYPE >s   |%s<!-- %s -->s   |%s"%s"s   %s %ss   |%s<%s>s
   |%s%s="%s"(   R"   R
   t   matcht   groupt	   lastindexRQ   R	   R   RJ   R   R+   t   attrst   itemsR   t   listt   joint   sortedt   children(	   RR   t   indentt   mR+   RB   RC   t
   attributest   valuet   child(   R:   t
   doctype_ret   rvt   serializeElement(    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyRj      sF    $				)
s   
(   R<   R:   t   ret   compileR`   (   R   RR   (    (   R:   Rh   Ri   Rj   s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyt   testSerializer   s    )N(   R5   R6   R   R>   RA   RH   RL   RO   RP   RT   RU   RX   Rm   (    (    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyR0   b   s   								t   AttrListc           B   sP   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 RS(   c         C   s"   | |  _  t |  j  j  |  _ d  S(   N(   RR   R!   R]   (   R   RR   (    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyR>      s    	c         C   s   t  |  j j    j   S(   N(   R_   R]   R^   t   __iter__(   R   (    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyRo      s    c         C   sv   t  j } | | d k sA |  j j | k re | | |  j j k re t | t  se t j |  } qe n  | |  j | <d  S(   Nt   *(   R    t   cdata_list_attributesRR   R+   R"   R_   R   t   split(   R   R+   Rf   t	   list_attr(    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyt   __setitem__   s    	c         C   s   t  |  j j    S(   N(   R_   R]   R^   (   R   (    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyR^      s    c         C   s   t  |  j j    S(   N(   R_   R]   t   keys(   R   (    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyRu      s    c         C   s   t  |  j  S(   N(   t   lenR]   (   R   (    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyt   __len__   s    c         C   s   |  j  | S(   N(   R]   (   R   R+   (    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyt   __getitem__   s    c         C   s   | t  |  j j    k S(   N(   R_   R]   Ru   (   R   R+   (    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyt   __contains__   s    (
   R5   R6   R>   Ro   Rt   R^   Ru   Rw   Rx   Ry   (    (    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyRn      s   							R@   c           B   s   e  Z d    Z d   Z d   Z d   Z e e e  Z d d  Z	 d   Z
 d   Z d   Z d   Z d	   Z d
   Z e e  Z RS(   c         C   s5   t  j j |  | j  | |  _ | |  _ | |  _ d  S(   N(   RV   t   NodeR>   R+   RR   R   RJ   (   R   RR   R   RJ   (    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyR>      s    		c         C   s  d  } } t | t  r& | } } nU t | t  r> | } n= | j j t k ri | j } } |  | _ n | j } |  | _ t | t  r | j d  k	 r | j j   n  | r|  j j	 r|  j j	 d j t k r|  j j	 d } |  j
 j | |  } | j |  | |  j
 _ n t | t  r;|  j
 j |  } n  |  j j	 r\|  j j t  } n- |  j j d  k	 r|  j
 j   } n	 |  j } |  j
 j | d |  j d | d  S(   Nit   parentt   most_recent_element(   R   R"   R*   R   RR   t	   __class__R   R{   t   extractt   contentsR   t
   new_stringt   replace_witht   _most_recent_elementt   _last_descendantR   t   next_elementRE   (   R   RS   t   string_childRg   t   old_elementt   new_elementR|   (    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyRT      s8    
					c         C   s#   t  |  j t  r i  St |  j  S(   N(   R"   RR   R	   Rn   (   R   (    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyt   getAttributes  s    c         C   s   | d  k	 r t |  d k r g  } xO t | j    D]; \ } } t | t  r7 t |   } | | =| | | <q7 q7 W|  j j j	 |  j
 |  x' | j   D] \ } } | |  j | <q W|  j j j |  j  n  d  S(   Ni    (   R   Rv   R_   R^   R"   t   tupleR   R   t   buildert$   _replace_cdata_list_attribute_valuesR+   RR   t   set_up_substitutions(   R   Re   t   converted_attributesR+   Rf   t   new_name(    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyt   setAttributes!  s    c         C   sH   t  |  j j |  |  j  } | r7 |  j | |  n |  j |  d  S(   N(   RM   R   R   t   insertBeforeRT   (   R   RN   R   t   text(    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyt
   insertText9  s    c         C   s   |  j  j | j   } | j  j t k r |  j  j r |  j  j | d j t k r |  j  j | d } |  j j | | j   } | j |  n |  j  j | | j   |  | _	 d  S(   Ni   (
   RR   t   indexR}   R   R   R   R   R   t   insertR{   (   R   RS   t   refNodeR   t   old_nodet   new_str(    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyR   @  s    c         C   s   | j  j   d  S(   N(   RR   R~   (   R   RS   (    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyt   removeChildL  s    c         C   s]  |  j  } | j  } | j } | j t t  } t | j  d k r[ | j d } | j } n d } | j } | j } t |  d k r| d }	 | r | |	 _ n	 | |	 _ | |	 _	 | r |	 | _ n	 |	 | _ | r |	 | _ n  | d j t t
  }
 | |
 _ | r|
 | _ n  d |
 _ n  x' | D] } | | _ | j j |  q$Wg  | _ | | _ d S(   s1   Move all of this tag's children into another tag.i    iN(   RR   t   next_siblingR   R   Rv   R   R   R   t   previous_elementt   previous_siblingt   TrueR{   RQ   (   R   t
   new_parentRR   t   new_parent_elementt   final_next_elementt   new_parents_last_descendantt   new_parents_last_childt(   new_parents_last_descendant_next_elementt	   to_appendt   first_childt   last_childs_last_descendantRg   (    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyt   reparentChildrenO  s>    					
						c         C   sa   |  j  j |  j j |  j  } t | |  j  |  j  } x$ |  j D] \ } } | | j | <q@ W| S(   N(   R   RI   RR   R+   RJ   R@   Re   (   R   RK   RS   t   keyRf   (    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyt	   cloneNode  s
    c         C   s
   |  j  j S(   N(   RR   R   (   R   (    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyt
   hasContent  s    c         C   s4   |  j  d  k r  t d |  j f S|  j  |  j f Sd  S(   Nt   html(   RJ   R   R   R+   (   R   (    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyt   getNameTuple  s    N(   R5   R6   R>   RT   R   R   t   propertyRe   R   R   R   R   R   R   R   R   t	   nameTuple(    (    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyR@      s   		6					B			RM   c           B   s   e  Z d    Z d   Z RS(   c         C   s)   t  j j |  d   | |  _ | |  _ d  S(   N(   RV   Rz   R>   R   RR   R   (   R   RR   R   (    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyR>     s    	c         C   s
   t   d  S(   N(   t   NotImplementedError(   R   (    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyR     s    (   R5   R6   R>   R   (    (    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyRM     s   	($   t   __all__R   Rk   t   bs4.builderR   R   R   R   t   bs4.elementR   R   R   t   html5lib.constantsR   R   R	   R
   R   R   t   html5lib.treebuildersR   RV   R   R$   t   ImportErrort   eR   R   R    RW   R0   t   objectRn   Rz   R@   RM   (    (    (    s9   /usr/lib/python2.7/site-packages/bs4/builder/_html5lib.pyt   <module>   s$   	""

9_