ó
‚•oTc           @   sð  y e  Wn e k
 r' e e f Z  n Xd  d l Z e j d ƒ Z e j d ƒ Z e j d ƒ Z e j d e j	 ƒ Z
 d d d d	 d
 d d d d d d d d d d d g Z d e f d „  ƒ  YZ d	 e f d „  ƒ  YZ d
 e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ e e d d „ Z e e d „ Z d d  d! „ Z d d  d" „ Z d# „  Z d e f d$ „  ƒ  YZ d d% „ Z d& „  Z d' e e d d( „ Z d) „  Z  e d* „ Z! d+ „  Z" e# d, k rìe" ƒ  n  d S(-   iÿÿÿÿNs   \s*(".*?"|'.*?')(.*)s   ^[^'," \[\]\(\)#]+$s%   (?:'.*?')|(?:".*?")|(?:[^'",\s][^,]*)s¦   
    ([^\#,"'\(\)\[\]][^\#,\]\)]*)  # value
    \s*                         # whitespace - XXX not caught
    ([\#,\)\]].*)?                  # rest of the line
    $t
   elem_quotet   unquotet   ListQuoteErrort
   QuoteErrort   UnQuoteErrort   BadLineErrort   CommentErrort   quote_escapet   quote_unescapet
   simplelistt
   LineParsert	   lineparset   csvreadt   csvwritet   list_stringifyt   makelistc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    s+   /var/www/SABnzbd/sabnzbd/utils/listquote.pyR   C   s   c           B   s   e  Z RS(    (   R   R   (    (    (    s+   /var/www/SABnzbd/sabnzbd/utils/listquote.pyR   F   s   c           B   s   e  Z RS(    (   R   R   (    (    (    s+   /var/www/SABnzbd/sabnzbd/utils/listquote.pyR   I   s   c           B   s   e  Z RS(    (   R   R   (    (    (    s+   /var/www/SABnzbd/sabnzbd/utils/listquote.pyR   L   s   c           B   s   e  Z RS(    (   R   R   (    (    (    s+   /var/www/SABnzbd/sabnzbd/utils/listquote.pyR   O   s   t   CSVErrorc           B   s   e  Z RS(    (   R   R   (    (    (    s+   /var/www/SABnzbd/sabnzbd/utils/listquote.pyR   R   s   c         C   sö   t  |  t ƒ s= | r$ t |  ƒ }  q= t d t |  ƒ ƒ ‚ n  | rd t  |  t ƒ rd t |  | ƒ }  n  d |  k r‰ t d t |  ƒ ƒ ‚ n  | r¨ t j |  ƒ d  k	 r¨ |  S|  j	 d ƒ d k rÅ d |  S|  j	 d ƒ d k râ d |  St d	 |  ƒ ‚ d  S(
   Ns   Can only quote strings. "%s"s   
s&   Multiline values can't be quoted.
"%s"t   "iÿÿÿÿs   "%s"t   's   '%s's   Value can't be quoted : "%s"(
   t
   isinstancet
   basestringt   strt	   TypeErrort   unicodeR   t   badcharst   matcht   Nonet   find(   t   membert   nonquotet	   stringifyt   encoding(    (    s+   /var/www/SABnzbd/sabnzbd/utils/listquote.pyR    X   s    )c         C   s­   t  j |  ƒ } | d  k rH |  j ƒ  d d k r5 |  St d |  ƒ ‚ n  | j ƒ  \ } } | r | j ƒ  r t d |  ƒ ‚ n  | s• | d d !} n  | s¥ | | f S| Sd  S(   Ni    s   '"s   Value is badly quoted: "%s"i   iÿÿÿÿ(   t   inquotesR   R   t   stripR   t   groups(   t   inlinet	   fullquotet   retaint   matt   quotedt   rest(    (    s+   /var/www/SABnzbd/sabnzbd/utils/listquote.pyR   ™   s    "
s   &mjf-lf;s
   &mjf-quot;c         C   sR   d |  k r! |  j  d | ƒ }  n  d |  k rN d |  k rN |  j  d | ƒ }  n  |  S(   Ns   
s   's   "(   t   replace(   t   valuet   lft   quot(    (    s+   /var/www/SABnzbd/sabnzbd/utils/listquote.pyR   Í   s
    c         C   s   |  j  | d ƒ j  | d ƒ S(   Ns   
R   (   R+   (   R,   R-   R.   (    (    s+   /var/www/SABnzbd/sabnzbd/utils/listquote.pyR   ê   s    c         C   s   t  j |  ƒ S(   N(   t   paramfindert   findall(   R%   (    (    s+   /var/www/SABnzbd/sabnzbd/utils/listquote.pyR	     s    c           B   sL   e  Z i d  d 6d d 6Z d d g Z d	 d „ Z d	 d „ Z d	 d „ Z RS(
   t   ]t   [t   )t   (s   'R   c         K   s   |  j  | |  d  S(   N(   t   reset(   t   selft   optionst   keywargs(    (    s+   /var/www/SABnzbd/sabnzbd/utils/listquote.pyt   __init__#  s    c         K   sò   | d  k r i  } n  | j | ƒ i t d 6t d 6t d 6t d 6t d 6} | j | ƒ | d r‡ | j i t d 6t d 6t d 6ƒ n  x0 | j ƒ  D]" } | d k r” t d | ‚ q” q” W| d |  _ | d |  _ | d |  _ | d |  _	 d  S(   Nt	   recursivet   commentR'   t
   force_listt   csvs5   '%s' is an invalid keyword argument for this function(   R;   R'   R=   R:   R<   (
   R   t   updatet   Truet   Falset   keysR   R:   R;   R'   R<   (   R6   R7   R8   t   defaultst   entry(    (    s+   /var/www/SABnzbd/sabnzbd/utils/listquote.pyR5   '  s6    	

	   	c         C   sÄ  | d  k r | |  _ n  | j ƒ  } g  } t } t } xà| r| d } | d k rY Pn  | | k rs | | d f S| r½ | d k r§ | d j ƒ  } t } t } q9 n  t d |  j ƒ ‚ n  y |  j | } Wn t k
 rá nn X|  j r| d  k	 rt d |  j ƒ ‚ n  |  j	 | d d | ƒ\ } } | j
 | ƒ | j ƒ  } t } q9 | |  j k r¤t | d t d |  j ƒ\ }	 } | j ƒ  } | j
 |	 ƒ t } q9 n  t j | ƒ }
 |
 d  k	 r|
 j d ƒ j ƒ  }	 |
 j d	 ƒ pæd
 } | j
 |	 ƒ t } q9 n  t d |  j ƒ ‚ q9 W| d  k	 r;t d |  j ƒ ‚ n  | s]| rT| d } q]d
 } n  |  j r‘t | t ƒ r‘| rˆ| g } q‘g  } n  |  j sº| r¶t d |  j ƒ ‚ n  | S| | f S(   Ni    t   #i   t   ,s   Line is badly built :
%st   endcharR&   R'   i   t    s   Comment not allowed :
%s(   R   t   origlinet   lstripR@   R?   R   t	   liststartt   KeyErrorR:   t   feedt   appendt   quotesR   R'   t   unquotedR   t   groupt   rstripR<   R   t   listR;   R   (   R6   R%   RF   t   outlistt   comma_neededt   found_commat   thischart   listendt   newlistt   elementR(   (    (    s+   /var/www/SABnzbd/sabnzbd/utils/listquote.pyRL   J  sx    2	
			N(   R   R   RJ   RN   R   R9   R5   RL   (    (    (    s+   /var/www/SABnzbd/sabnzbd/utils/listquote.pyR
     s
   #c         K   s   t  | |  } | j |  ƒ S(   N(   R
   RL   (   R%   R7   R8   t   p(    (    s+   /var/www/SABnzbd/sabnzbd/utils/listquote.pyR   Ó  s    Hc         C   sj   g  } x] |  D]U } t  | t t f ƒ sI t  | t ƒ sU t | ƒ } qU n t | ƒ } | j | ƒ q W| S(   N(   R   t   tupleRR   R   R   R   RM   (   t   inlistRS   t   item(    (    s+   /var/www/SABnzbd/sabnzbd/utils/listquote.pyR   !  s    RG   c         C   sè   | r t  |  ƒ }  n  i d d 6d d 6d d 6} g  } t |  ƒ d k  rW | pQ d } n  xy |  D]q } t | t t f ƒ sª | rŽ t | ƒ } n  | j t | d | ƒƒ q^ | j t | | p¿ d | | | ƒ ƒ q^ W| | d	 j	 | ƒ S(
   Ns   [%s]R2   s   (%s)R4   s   %sRG   i   R!   s   , (
   R   t   lenR   RR   R[   R   RM   R    R   t   join(   R\   t   listcharR    t   escapeR!   t   listdictt   outlineR]   (    (    s+   /var/www/SABnzbd/sabnzbd/utils/listquote.pyR   K  s    &c         C   sÈ   g  } g  } d } t  d t ƒ } xs |  D]k } | d 7} y | j | ƒ } Wn8 t k
 r… } g  } | | _ | | _ | j | ƒ n X| j | ƒ q( W| rÄ t d ƒ } | | _ | | _	 | ‚ n  | S(   NiÿÿÿÿR=   i   s+   Parsing CSV failed. See 'errors' attribute.(
   R
   R?   RL   R   t   linet   indexRM   R   R=   t   errors(   t   infilet   out_csvRf   Re   RZ   Rd   t   valuest   e(    (    s+   /var/www/SABnzbd/sabnzbd/utils/listquote.pyR   ‡  s(    ,
					c         C   s¡   g  } x” |  D]Œ } | rd g  } x9 | D]1 } t  | t ƒ sJ t | ƒ } n  | j | ƒ q& W| } n  d j g  | D] } t | ƒ ^ qq ƒ } | j | ƒ q W| S(   Ns   , (   R   R   R   RM   R_   R    (   R\   R    t   out_listRC   t	   new_entryt   valt	   this_line(    (    s+   /var/www/SABnzbd/sabnzbd/utils/listquote.pyR   Ê  s    '	(c          C   s   d d  l  }  |  j ƒ  d  S(   Niÿÿÿÿ(   t   doctestt   testmod(   Ro   (    (    s+   /var/www/SABnzbd/sabnzbd/utils/listquote.pyt   _test   s    t   __main__($   R   t	   NameErrorR   R   t   ret   compileR"   R   R/   t   VERBOSERO   t   __all__t   SyntaxErrorR   R   R   R   R   R   R?   R@   R   R    R   R   R   R	   t   objectR
   R   R   R   R   R   Rq   R   (    (    (    s+   /var/www/SABnzbd/sabnzbd/utils/listquote.pyt   <module>    s\   	A4	¶N	*<	C6	
S