ó
õá¨Jc           @   sn   d  Z  d d l Z d d l Z d d l Z d d l Z d d l m Z i d d 6d d 6d d	 6Z d
 „  Z d S(   sE   
Process a set of configuration defined sanitations on a given feed.
iÿÿÿÿN(   t
   feedparsers
   text/plaint   texts	   text/htmlt   htmls   application/xhtml+xmlt   xhtmlc         C   sk  x*t  j |  ƒ j ƒ  D]} | j d ƒ d k r: d } n  | j j | ƒ rY | j | =n  xÍ | j D]Â } | j | ƒ r‚ | | =n  | j | d ƒ r£ | | d =n  | j | d ƒ rÄ | | d =n  x^ | j ƒ  D]P } | j d ƒ sì qÑ n  x2 | | j	 ƒ  D]  } | | k rý | | | =qý qý WqÑ Wqc Wq Wt  j
 |  ƒ r“t  j
 |  ƒ } t j | | ƒ } x3 | j D]% } | j d ƒ rg| | j d <qgqgWn  t  j |  ƒ rùt  j |  ƒ } t j | | ƒ } x3 | j D]% } | j d ƒ rÍ| | j d <qÍqÍWn  t  j |  ƒ rct  j |  ƒ } t j | | ƒ } x7 | j D]) } | j d	 ƒ r3| | j d d <q3q3Wn  t  j |  ƒ j d
 ƒ d k r˜d d l m }	 | j j d ƒ rà| j j j d ƒ ràt |	 | j j j ƒ ƒ | j j d <n  xµ | j D]§ } | j d ƒ r3| j j d ƒ r3t |	 | j j ƒ ƒ | j d <n  | j d ƒ rê| j }
 |
 j d ƒ r‘|
 j j d ƒ r‘t |	 |
 j j ƒ ƒ |
 j d <q‘qêqêWn  t  j |  ƒ j ƒ  } | d k r˜t j ƒ  } | j j d ƒ r| j d r| j d | k r| j d =qn  x`| j D]€ } | j d ƒ rT| d rT| d | k rT| d =| d =qTn  | j d ƒ r| d r| d | k r‘| d =| d =q‘qqWnÒ | d k rjt j ƒ  } | j j d ƒ rò| j d rò| j d | k rò| j d =qòn  g  | j D]b } | j d ƒ s-| d s-| d | k rü| j d ƒ sX| d sX| d | k rü| ^ qü| _ n  t  j |  ƒ } xë| j | j g D]Ö} xÍ| j ƒ  D]¿} | d	 k rÒ| j d ƒ rÒ| j d } n | j d ƒ r | | } n q | j d ƒ sq n  d
 | d k rq n  | j d ƒ s1q n  | j d ƒ r!| rù| d k r®| j d ƒ r†| j j d ƒ r†| j j | d <qö| j j d ƒ rö| j j | d <qöqù| d k rÜ| j d ƒ rö| j | d <qöqùt j  | d | ƒ | d <n  t j! | j" | j# d | j$ ƒ | d <n  d  } d | d k ruy' d d l& m' } | j( | d ƒ } Wqud | d <quXn  | sÈd d  l) m* } m+ } | j, d! | j- d" ƒ ƒ } | j. | d d# d ƒ} n  d d$ l) m/ } m0 } d d% l1 m2 } | j3 | j4 d" ƒ | ƒ ƒ } | j5 d& t6 ƒ } | j7 | d# d ƒ} d' j8 g  | D] } t | ƒ ^ q@ƒ | d <q WqWd  S((   Nt   langi    t   languaget   _detailt   _parsedt   title_detailt   typet   summary_detailt   contentR   iÿÿÿÿ(   t	   stripHtmlt   author_detailt   namet   sourcet   ignore_datet   updated_parsedt   published_parsedt	   publishedt   updatedt   ignore_entryt   content_detailt   valuet   baset   feed_alternatet   linkt   entry_alternates   utf-8R   (   t   minidoms	   text/html(   t   html5parsert   treebuilderst   treet   domt   encoding(   t   treewalkerst
   serializer(   t	   sanitizert   inject_meta_charsett    (9   t   configt   ignore_in_feedt   splitt   findt   feedt   has_keyt   entriest   keyst   endswitht   copyt
   title_typet   type_mapt   getR   t   summary_typeR
   t   content_typeR   t	   name_typet
   shell.tmplR   R   t   strR   R   t   future_datest   lowert   timet   gmtimet   xml_baseR   R    t   _urljoint   _resolveRelativeURIsR   R   R	   t   Nonet   xml.domR   t   parseStringt   html5libR   R   t
   HTMLParsert   getTreeBuildert   parseFragmentR"   R#   t   html5lib.filtersR$   t   Filtert   getTreeWalkert   XHTMLSerializert   Falset	   serializet   join(   t   feed_urit   datat   tagt   entryt   keyt   detailR1   R4   R5   R   R   R9   t   nowt   scrub_xmlbaset   nodet   docR   R   R   t   pR"   R#   R$   t   walkerR   R   t   token(    (    s=   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/scrub.pyt   scrub   sò     	  
    ("	,  "   "(   t   __doc__R;   t   planetR'   t   shellR    R2   R[   (    (    (    s=   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/scrub.pyt   <module>   s   $
