B
    ›³ëbÞ  ã               @   sN   d dl Z d dlZd dlZd dlZd dlZdd„ Zdd„ Zddd„Zd	d
„ Z	dS )é    Nc             C   sh   t j |¡r,|  |¡}t j |¡rd| ¡ }n8t j |¡r^g }x|D ]}|t| |ƒ7 }qBW |}n|g}|S )z?
    Substitute environment variables and split into list.
    )ÚSConsÚUtilÚ	is_StringZsubstÚsplitZis_SequenceÚ_subst_libs)ÚenvÚlibsZ_libsÚlib© r
   ú1lib/python3.7/site-packages/SCons/Scanner/Java.pyr       s    


r   c             C   s>   x8|D ]0}t j |¡d dkr|  t j t|ƒ|¡¡ qW d S )Né   z.class)ÚosÚpathÚsplitextÚappendÚjoinÚstr)ÚlistÚdirnameÚfilesÚfnamer
   r
   r   Ú_collect_classes3   s    
r   r
   c             C   sÆ   |  dg ¡}t||ƒ}g }x˜|D ]}tj |¡rDd|krD| |¡}n|g}xd|D ]\}tj t	|ƒ¡r¢| 
|¡ t|¡ x4t t	|ƒ¡D ]\}}	}
t|||
ƒ q†W qP| |¡ qPW q W ttdd„ |ƒƒS )až  Scan for files on the JAVACLASSPATH.

    The classpath can contain:
     - Explicit paths to JAR/Zip files
     - Wildcards (*)
     - Directories which contain classes in an unnamed package
     - Parent directories of the root package for classes in a named package

     Class path entries that are neither directories nor archives (.zip or JAR files) nor the asterisk (*) wildcard character are ignored.
     ZJAVACLASSPATHÚ*c             S   s   t j t| ƒ¡d dkS )Nr   )z.classz.zipz.jar)r   r   r   r   )Úxr
   r
   r   Ú<lambda>X   ó    zscan.<locals>.<lambda>)Úgetr   r   r   r   ZGlobr   r   Úisdirr   ZDirÚwalkr   r   r   Úfilter)Znoder   ZlibpathZ	classpathÚresultr   r   r	   ÚrootÚdirsr   r
   r
   r   Úscan9   s    


r#   c               C   s   t jjtddgdS )NÚJavaScannerz.java)Zskeys)r   ÚScannerZBaser#   r
   r
   r
   r   r$   [   s    
r$   )r
   )
r   Z
SCons.Noder   ZSCons.Node.FSZSCons.ScannerZ
SCons.Utilr   r   r#   r$   r
   r
   r
   r   Ú<module>   s   
"