
­­­­­­­­­­­­­­­­­­
<!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|sytj	| W n> t
k
r } z"|jtjkrtjj|rn 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rd|  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   