
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
Ù¥ˆcL  ã               @   s*   d dl Z d dlZd dlZG dd„ dƒZdS )é    Nc               @   sR   e Zd ZdZddd„Zdd„ Zd	d
„ Zddd„Zdd„ Zdd„ Z	G dd„ dƒZ
dS )ÚEnvironmentFileFú=NTc             C   sL   || _ || _|| _g | _|d k	r$|n|}tjd| d tjƒ| _| jƒ  d S )Nz^(\s*)(\S*)([^\n\S]*)(z)([^\n\S]*)(.*)$)	ÚfilenameÚ	delimiterÚquotesÚenvironmentÚreÚcompileÚ	MULTILINEÚpatternÚread)Úselfr   r   Zdelimiter_rer   © r   ú0/usr/lib/python3.6/authcompat_EnvironmentFile.pyÚ__init__   s    

zEnvironmentFile.__init__c             C   sp   y$t | jdƒ�}|jƒ }W d Q R X W n tk
r8   d S X x0|D ](}| jj|| j| j| jƒ}| j	j
|ƒ q@W d S )NÚr)Úopenr   Ú	readlinesÚFileNotFoundErrorÚLineÚParser   r   r   r   Úappend)r   ÚfÚlinesÚlineZparsedr   r   r   r   .   s    
zEnvironmentFile.readc             C   sÜ   d}x| j D ]}||jƒ  }qW | jrNtd| j ƒ t|ƒ td| j ƒ d S tjj| jƒ}tjj|ƒs¶ytj	|ƒ W n> t
k
r´ } z"|jtjkr¢tjj|ƒr¢n‚ W Y d d }~X nX t| jdƒ�}|j|ƒ W d Q R X d S )NÚ z+========== BEGIN Content of [%s] ==========z,========== END   Content of [%s] ==========
Úw)r   ÚgetLineÚTESTÚprintr   ÚosÚpathÚdirnameÚexistsÚmakedirsÚOSErrorÚerrnoZEEXISTÚisdirr   Úwrite)r   Úoutputr   r"   Z	exceptionr   r   r   r   r(   :   s$    zEnvironmentFile.writec             C   s\   d }x&| j D ]}|jƒ r|j|kr|j}qW |d kr8|S |jƒ dkrHdS |jƒ dkrXd
S |S )NÚnoÚfalser   ÚnFÚyesÚtrueÚtÚyT)Nr*   r+   r   r,   )r-   r.   r/   r0   )r   Ú
isVariableÚnameÚvalueÚlower)r   r2   Údefaultr3   r   r   r   r   ÚgetR   s    
zEnvironmentFile.getc             C   s*   g }x | j D ]}|jƒ r|j|ƒ qW |S )N)r   r1   r   )r   r   r   r   r   r   Úgetallb   s
    zEnvironmentFile.getallc             C   sv   t |ƒtkr|rdnd}x0| jD ]&}|jƒ r |j|kr |j||ƒ d S q W | j| j| jƒ}|j||ƒ | jj	|ƒ d S )Nr-   r*   )
ÚtypeÚboolr   r1   r2   Úsetr   r   r   r   )r   r2   r3   r   r   r   r   r:   j   s    zEnvironmentFile.setc               @   sZ   e Zd Zddd„Zdd„ Zdd„ Zdd	„ Zd
d„ Zedd„ ƒZ	edd„ ƒZ
edd„ ƒZdS )zEnvironmentFile.LineNc             C   s(   || _ || _|| _|| _|| _|| _d S )N)r   r   r2   r3   ÚoriginalÚfmt)r   r   r   r2   r3   r;   r<   r   r   r   r   x   s    zEnvironmentFile.Line.__init__c             C   s
   | j d k	S )N)r<   )r   r   r   r   r1   �   s    zEnvironmentFile.Line.isVariablec             C   s
   | j d k	S )N)r;   )r   r   r   r   Ú
isOriginal„   s    zEnvironmentFile.Line.isOriginalc             C   s&   || _ || _| jd kr"d| j | _d S )Nz${name}%s${value}
)r2   r3   r<   r   )r   r2   r3   r   r   r   r:   ‡   s    
zEnvironmentFile.Line.setc             C   sp   | j ƒ r| jS | jd k	r| jnd}| j| j|| jƒdœ}| j}x,|jƒ D ] \}}|jd| d t	|ƒƒ}qHW |S )Nr   )r2   r3   z${ú})
r=   r;   r3   r2   ÚEscaper   r<   ÚitemsÚreplaceÚstr)r   r3   Zreplacementr   Úkeyr   r   r   r   �   s    zEnvironmentFile.Line.getLinec             C   sŽ   |j | ƒ}| jdƒs$| jƒ  s$| r4tj||| d�S |jdƒ}tjj|jdƒ|ƒ}d|jdƒ|jdƒ|jdƒ|jd	ƒf }tj|||||d
�S )Nú#)r;   é   é   z%s${name}%s%s%s${value}
é   é   é   é   )r2   r3   r<   )ÚmatchÚ
startswithÚstripr   r   ÚgroupÚUnescape)r   r   r   r   rK   r2   r3   r<   r   r   r   r   �   s    



zEnvironmentFile.Line.Parsec             C   sŒ   | d krdS t | ƒ} | jddƒ} | jddƒ} | jddƒ} | jdd	ƒ} | jd
dƒ} | jddƒ} |rˆ| jdƒdks|| jdƒdkrˆd|  d } | S )Nr   ú\z\\ú"z\"ú'z\'ú$z\$ú~z\~ú`z\`ú r   ú	)rB   rA   Úfind)r3   r   r   r   r   r?   ­   s    zEnvironmentFile.Line.Escapec             C   s¾   | s| S t | ƒ} t| ƒ}|rX| d dks4| d dkrX| d | |d  krX| d|d … } d}x\| jd|ƒ}|dk rtP |d t| ƒkr’| d|… } P | d|… | |d d …  } |d7 }q^W | S )Nr   rQ   rR   rG   rP   )rB   ÚlenrX   )r3   r   ZlengthÚir   r   r   rO   À   s$    ,zEnvironmentFile.Line.Unescape)NNNN)Ú__name__Ú
__module__Ú__qualname__r   r1   r=   r:   r   Ústaticmethodr   r?   rO   r   r   r   r   r   w   s   
r   )r   NT)N)r[   r\   r]   r   r   r   r(   r6   r7   r:   r   r   r   r   r   r      s    

r   )r&   r    r   r   r   r   r   r   Ú<module>   s   