
pVc           @   s   d  Z  d d l Z d Z d   Z d   Z d   Z d   Z d   Z d	   Z d
   Z	 d   Z
 d   Z d   Z d   Z d   Z d d  Z d   Z e d k r e   n  d S(   s3   `cssmin` - A Python port of the YUI CSS compressor.iNs   0.1.4c         C   s  t  } t  } |  j d  } x | d k r|  | d | d !d k } |  j d | d  } | d k  r~ | s |  |  }  Pq n| | | d k r |  | d d k r | d } t } q | r | d } t  } q | s |  |  |  | d }  q | d } n  |  j d |  } q W|  S(	   s   Remove all CSS comment blocks.s   /*i    i   i   t   !s   */i   s   \(   t   Falset   findt   True(   t   csst   iemact   preservet   comment_startt   comment_end(    (    sv   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/django_compressor-1.4-py2.7.egg/compressor/filters/cssmin/cssmin.pyt   remove_comments$   s,    

	
	c         C   s   d   } | |   }  t  j d d |   }  t  j d d |   }  t  j d d |   }  t  j d d |   }  |  j d	 d
  }  t  j d d |   }  |  S(   s)   Remove unnecessary whitespace characters.c         S   s|   t  j d  } | j |   } xW | rw d j |  | j    | j   j d d  |  | j   g  }  | j |   } q! W|  S(   s   
        Prevents 'p :link' from becoming 'p:link'.

        Translates 'p :link' into 'p ___PSEUDOCLASSCOLON___link'; this is
        translated back again later.
        s   (^|\})(([^\{\:])+\:)+([^\{]*\{)t    t   :t   ___PSEUDOCLASSCOLON___(   t   ret   compilet   searcht   joint   startt   groupt   replacet   end(   R   t   regext   match(    (    sv   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/django_compressor-1.4-py2.7.egg/compressor/filters/cssmin/cssmin.pyt   pseudoclasscolonI   s    		s   \s+([!{};:>+\(\)\],])s   \1s   ^(.*)(@charset \"[^\"]*\";)s   \2\1s   ^(\s*@charset [^;]+;\s*)+s   \band\(s   and (R   R   s   ([!{}:;>+\(\[,])\s+(   R   t   subR   (   R   R   (    (    sv   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/django_compressor-1.4-py2.7.egg/compressor/filters/cssmin/cssmin.pyt   remove_unnecessary_whitespaceF   s    	c         C   s   t  j d d |   S(   s   Remove unnecessary semicolons.s   ;+\}t   }(   R   R   (   R   (    (    sv   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/django_compressor-1.4-py2.7.egg/compressor/filters/cssmin/cssmin.pyt   remove_unnecessary_semicolonsq   s    c         C   s   t  j d d |   S(   s   Remove empty rules.s   [^\}\{]+\{\}R
   (   R   R   (   R   (    (    sv   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/django_compressor-1.4-py2.7.egg/compressor/filters/cssmin/cssmin.pyt   remove_empty_rulesw   s    c         C   s   t  j d  } | j |   } xn | r t d   | j d  j d   } d t t t |   } |  j | j   |  }  | j |   } q! W|  S(   s'   Convert `rgb(51,102,153)` to `#336699`.s   rgb\s*\(\s*([0-9,\s]+)\s*\)c         S   s
   |  j    S(   N(   t   strip(   t   s(    (    sv   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/django_compressor-1.4-py2.7.egg/compressor/filters/cssmin/cssmin.pyt   <lambda>   s    i   t   ,s   #%.2x%.2x%.2x(	   R   R   R   t   mapR   t   splitt   tuplet   intR   (   R   R   R   t   colorst   hexcolor(    (    sv   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/django_compressor-1.4-py2.7.egg/compressor/filters/cssmin/cssmin.pyt   normalize_rgb_colors_to_hex}   s    	$c         C   s   t  j d d |   S(   s%   Replace `0(px, em, %, etc)` with `0`.s%   ([\s:])(0)(px|em|%|in|cm|mm|pc|pt|ex)s   \1\2(   R   R   (   R   (    (    sv   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/django_compressor-1.4-py2.7.egg/compressor/filters/cssmin/cssmin.pyt   condense_zero_units   s    c         C   sL   |  j  d d  }  |  j  d d  }  |  j  d d  }  |  j  d d  }  |  S(   s/   Replace `:0 0 0 0;`, `:0 0 0;` etc. with `:0;`.s	   :0 0 0 0;s   :0;s   :0 0 0;s   :0 0;s   background-position:0;s   background-position:0 0;(   R   (   R   (    (    sv   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/django_compressor-1.4-py2.7.egg/compressor/filters/cssmin/cssmin.pyt   condense_multidimensional_zeros   s
    c         C   s   t  j d d |   S(   s'   Replace `0.6` with `.6` where possible.s   (:|\s)0+\.(\d+)s   \1.\2(   R   R   (   R   (    (    sv   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/django_compressor-1.4-py2.7.egg/compressor/filters/cssmin/cssmin.pyt   condense_floating_points   s    c         C   s  t  j d  } | j |   } x | r| j d  | j d  | j d  } | j d  | j d  | j d  } | j   | j   k r |  j | j   | j d  | j d	  d
 |  }  | j |  | j   d  } q! | j |  | j    } q! W|  S(   s3   Shorten colors from #AABBCC to #ABC where possible.s_   ([^\"'=\s])(\s*)#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])i   i   i   i   i   i   i   i   t   #(   R   R   R   R   t   lowerR   R   (   R   R   R   t   firstt   second(    (    sv   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/django_compressor-1.4-py2.7.egg/compressor/filters/cssmin/cssmin.pyt   condense_hex_colors   s    	))6c         C   s   t  j d d |   S(   s:   Condense multiple adjacent whitespace characters into one.s   \s+t    (   R   R   (   R   (    (    sv   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/django_compressor-1.4-py2.7.egg/compressor/filters/cssmin/cssmin.pyt   condense_whitespace   s    c         C   s   t  j d d |   S(   s9   Condense multiple adjacent semicolon characters into one.s   ;;+t   ;(   R   R   (   R   (    (    sv   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/django_compressor-1.4-py2.7.egg/compressor/filters/cssmin/cssmin.pyt   condense_semicolons   s    c         C   s   g  } d } x[ t  |   D]M \ } } | d k r | | | k r | j |  | | d ! | d } q q W| t |   k  r | j |  |  n  d j |  S(   s9   Wrap the lines of the given CSS to an approximate length.i    R   i   s   
(   t	   enumeratet   appendt   lenR   (   R   t   line_lengtht   linest
   line_startt   it   char(    (    sv   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/django_compressor-1.4-py2.7.egg/compressor/filters/cssmin/cssmin.pyt   wrap_css_lines   s    c         C   s   t  |   }  t |   }  |  j d d  }  t |   }  t |   }  t |   }  t |   }  t |   }  t |   }  t	 |   }  | d  k	 r t |  |  }  n  |  j d d  }  t |   }  |  j   S(   Ns   "\"}\""t   ___PSEUDOCLASSBMH___(   R	   R1   R   R   R   R(   R)   R*   R'   R/   t   NoneR<   R3   R   (   R   t   wrap(    (    sv   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/django_compressor-1.4-py2.7.egg/compressor/filters/cssmin/cssmin.pyt   cssmin   s    c          C   s   d d  l  }  d d  l } |  j d d d t d d d d  } | j d	 d
 d d d d  d d d d | j   \ } } | j j t	 | j
 j   d | j  d  S(   Nit   progR@   t   versiont   usages   %prog [--wrap N]t   descriptions>   Reads raw CSS from stdin, and writes compressed CSS to stdout.s   -ws   --wrapt   typeR$   t   defaultt   metavart   Nt   helps.   Wrap output to approximately N chars per line.R?   (   t   optparset   syst   OptionParsert   __version__t
   add_optionR>   t
   parse_argst   stdoutt   writeR@   t   stdint   readR?   (   RJ   RK   t   pt   optionst   args(    (    sv   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/django_compressor-1.4-py2.7.egg/compressor/filters/cssmin/cssmin.pyt   main   s    		t   __main__(   t   __doc__R   RM   R	   R   R   R   R'   R(   R)   R*   R/   R1   R3   R<   R>   R@   RW   t   __name__(    (    (    sv   /opt/seafile/seafile-server-5.1.3/seahub/thirdpart/django_compressor-1.4-py2.7.egg/compressor/filters/cssmin/cssmin.pyt   <module>   s$   	"	+											