ó
£Hc           @   s(   d  d l  Z  d „  Z d i  d „ Z d S(   iÿÿÿÿNc         C   s¤   t  |  ƒ t k r$ |  j d ƒ }  n  | j d ƒ rF |  j d d ƒ n  |  j d ƒ d k  rg d |  d S|  j d ƒ d k  rˆ d |  d Sd |  j d | ƒ d Sd S(   s8    quote a string so that it can be passed as a parameter s   utf-8s   \s   \\t   'i    t   "N(   t   typet   unicodet   encodet
   startswitht   replacet   find(   t   stringt   apos(    (    sB   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/shell/xslt.pyt   quote   s     c      	   C   s×  y1 d d l  } d d l } | j | ƒ } d } Wn d } n Xd } | rð | j |  ƒ }	 | j |	 ƒ }
 x. | j ƒ  D]  } t | | d d ƒ| | <qx W|
 j | | ƒ } | rÊ |
 j	 | | d ƒ n | j
 d ƒ } |
 j ƒ  | j ƒ  nÐ| rþd d l } t | d ƒ r$| j d t ƒ n  t j ƒ  } t | d	 ƒ } | j | ƒ | j ƒ  g  } xi | j ƒ  D][ \ } } | j d
 ƒ d k r¥| j d ƒ d k r¥qin  | d | t | d d ƒg 7} qiWt j d d j | ƒ |  | | f ƒ t j | ƒ nÂ d d l } d d l m } m } t g  | j ƒ  D] \ } } d | | g ^ q0g  ƒ } | d g | |  d g d | d | d | ƒ} | j  | ƒ \ } } | rÀd d l! } | j" j# | ƒ n  | rÓ| j ƒ  n  | S(   s    process an XSLT stylesheet iÿÿÿÿNR	   s   â€™i    s   utf-8t   simplefiltert   ignoret   wR    R   s   --stringparams   \'s   xsltproc %s %s %s > %st    (   t   Popent   PIPEt   xsltproct   -t   stdint   stdoutt   stderr($   t   libxml2t   libxsltt   parseDoct   Nonet	   parseFilet   parseStylesheetDoct   keysR
   t   applyStylesheett   saveResultToFilenamet	   serializet   freeStylesheett   freeDoct   warningst   hasattrR   t   RuntimeWarningt   ost   tmpnamt   opent   writet   closet   itemsR   t   systemt   joint   unlinkt   syst
   subprocessR   R   t   sumt   communicatet   planett   loggert   error(   t   scriptt   doct   output_filet   optionsR   R   t   domt   docfilet   resultt   styledoct   stylet   keyt   outputR"   t   filet   cmdoptst   valueR.   R   R   t   procR   R2   (    (    sB   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/shell/xslt.pyt   run   s`    



* #	1 (   R%   R
   R   RD   (    (    (    sB   /home/sa3ruby/intertwingly.net/code/venus-bzr/planet/shell/xslt.pyt   <module>   s   	