mς
­fIc           @   sO   d  Z  d k Z d d d d g Z h  Z d   Z d   Z d   Z d	   Z d S(
   s£  Filename matching with shell patterns.

fnmatch(FILENAME, PATTERN) matches according to the local convention.
fnmatchcase(FILENAME, PATTERN) always takes case in account.

The functions operate by translating the pattern into a regular
expression.  They cache the compiled regular expressions for speed.

The function translate(PATTERN) returns a regular expression
corresponding to PATTERN.  (It does not compile it.)
Nt   filtert   fnmatcht   fnmatchcaset	   translatec         C   s:   d k  } | i i |   }  | i i |  } t |  |  S(   s½  Test whether FILENAME matches PATTERN.

    Patterns are Unix shell style:

    *       matches everything
    ?       matches any single character
    [seq]   matches any character in seq
    [!seq]  matches any char not in seq

    An initial period in FILENAME is not special.
    Both FILENAME and PATTERN are first case-normalized
    if the operating system requires it.
    If you don't want this, use fnmatchcase(FILENAME, PATTERN).
    N(   t   ost   patht   normcaset   namet   patR   (   R   R   R   (    (    t$   /mit/python/lib/python2.4/fnmatch.pyR      s
     	c         C   sι   d k  } d k } g  } | i i |  } | t j o# t |  } t	 i
 |  t | <n t | i } | i | j o3 xk |  D]$ } | |  o | i |  q~ q~ Wn< x8 |  D]0 } | | i i |   o | i |  q± q± W| S(   s2   Return the subset of the list NAMES that match PATN(   R   t	   posixpatht   resultR   R   R   t   _cacheR   t   rest   ret   compilet   matcht   namesR   t   append(   R   R   R
   R   R   R   R   R   (    (    R	   R    (   s$       c         C   sG   | t j o# t |  } t i |  t | <n t | i |   d j	 S(   s   Test whether FILENAME matches PATTERN, including case.

    This is a version of fnmatch() which doesn't case-normalize
    its arguments.
    N(	   R   R   R   R   R   R   R   R   t   None(   R   R   R   (    (    R	   R   <   s
     c         C   sΒ  d t  |   } } d } x| | j  o|  | } | d } | d j o | d } q | d j o | d } q | d j o"| } | | j  o |  | d	 j o | d } n | | j  o |  | d
 j o | d } n x- | | j  o |  | d
 j o | d } qα W| | j o | d } q΅|  | | !i d d  } | d } | d d	 j o d | d } n  | d d j o d | } n d | | f } q | t	 i
 |  } q W| d S(   sf   Translate a shell PATTERN to a regular expression.

    There is no way to quote meta-characters.
    i    t    i   t   *s   .*t   ?t   .t   [t   !t   ]s   \[s   \s   \\t   ^s   %s[%s]t   $N(   t   lenR   t   it   nR   t   ct   jt   replacet   stuffR   t   escape(   R   R    R   R   R!   R   R#   (    (    R	   R   H   s>      

 
(   t   __doc__R   t   __all__R   R   R    R   R   (   R&   R   R    R   R   R   R   (    (    R	   R      s   				