Mini Shell

Direktori : /lib64/gedit/plugins/snippets/__pycache__/
Upload File :
Current File : //lib64/gedit/plugins/snippets/__pycache__/parser.cpython-36.pyc

3

�CZ��@s(ddlZGdd�d�ZGdd�d�ZdS)�Nc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�TokencCs||_||_dS)N)�klass�data)�selfrr�r�+/usr/lib64/gedit/plugins/snippets/parser.py�__init__szToken.__init__cCsd|j|jfS)Nz%s: [%s])rr)rrrr�__str__sz
Token.__str__cCs|j|jko|j|jkS)N)rr)r�otherrrr�__eq__szToken.__eq__cCs|j|�S)N)r)rr
rrr�__ne__szToken.__ne__N)�__name__�
__module__�__qualname__rr	rrrrrrrsrc@s�eZdZdZdZejdeef�Zdd�Zdd�Z	dd	�Z
d
d�Zdd
�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(S))�Parserz[A-Z_]+z[0-9]+z(\$(%s|\(|\{|<|%s)|`|\\)cKsVx |j�D]\}}t|||�q
Wd|_t|j�|_|j|j|j|j	|j
|jf|_dS)Nr)
�items�setattr�position�lenr�data_length�
_match_env�_match_regex�_match_placeholder�_match_shell�_match_eval�_text�RULES)r�kwargs�k�vrrrr(s
zParser.__init__cCs|j|jd�S)N)rr)rrrr�remains1szParser.remainscCs(|jd|jkrdS|j|jdSdS)N��)rrr)rrrr�	next_char4szParser.next_charcCs |j|jkrdS|j|jSdS)Nr")rrr)rrrr�char:szParser.charc	Cs�d|_xl|j|jkrry|j|jd�|j�}Wn|j}YnX||jkrb|jdkrbtd|j�S|�}|r|SqW|jdkr�td|j�SdS)Nr")�$�`�text)�tktextrr�_rule�_try_match_shellr$rr)r�funcZtkrrr�token@s
zParser.tokencCs(|j�dd�}|dkrdS|jj|�S)Nr!r"F)r �
REG_ESCAPE�match)rr'rrr�_need_escapeWszParser._need_escapecCs|j�sdS|jd7_dS)Nr!)r/r)rrrr�_escape_szParser._escapecCs8|j�dkr|j�|j|j�7_|jd7_dS)N�\r!)r$r0r(r)rrrrrfszParser._textcCs"x|jD]}|�}|r|SqWdS)N)r)rZrule�resrrrr)mszParser._rulecCs\|j�}tjd|j|�p*tjd|j|�}|rX|jt|jd��7_td|jd��SdS)Nz\$(%s)z\${(%s)}rZenvironmentr!)r �rer.�SREG_ENVrr�groupr)rr'r.rrrrts
$zParser._match_envcCs�d}t|�}g}d}x�||kr�||}||dko<||d}|dkrd|dksV|dkrd|}|d7}n(|dkr�|dkr~|j|�d}|d7}q|dkr�||p�|}|d7}qW|dkr�|j|�|S)Nrr!r1�,�])r�append)rZlst�posZlengthrZlastr$�nextrrr�_parse_list|s*



zParser._parse_listcCs>tjd|�}|s|gS|j�}|dr0|dgS|j|d�S)Nz!^\s*(\\)?(\[((\\]|[^\]])+)\]\s*)$rr!�)r3r.�groupsr;)r�defaultr.r=rrr�_parse_default�s
zParser._parse_defaultcCs�|j�}tjd|j|�p*tjd|j|�}|s4dS|j�}d}t|d�}|jt|jd��7_t|�dkr�|dr�|j	|dj
dd��}td	||d
��S)Nz\${(%s)(:((\\\}|[^}])+))?}z\$(%s)r"rr!r<z\}�}Zplaceholder)�tabstopr>)r r3r.�SREG_IDr=�intrrr5r?�replacer)rr'r.r=r>rArrrr�s$zParser._match_placeholdercCs�|j�}tjd|j|�p*tjd|j|�}|s4dS|j�}|drPt|d�pRd}|jt|jd��7_|ddkr�|dj	dd�}n|dj	dd	�}t
d
||d��S)
Nz`((%s):)?((\\`|[^`])+?)`z\$\(((%s):)?((\\\)|[^\)])+?)\)r!rr&r<z\`z\)�)�shell)rA�contents���)r r3r.rBr=rCrrr5rDr)rr'r.r=rArGrrrr�s$zParser._match_shellcCs|j�p|j�S)N)rr)rrrrr*�szParser._try_match_shellcCs^tj|j�}d}g}|jd�}x6|D].}|j|�r<t|�}q$||j|dd��7}q$W||fS)Nr!�:rHrH)r3�compilerB�splitr.rCr;)r�optionsZregrA�dependZoptrrr�
_eval_options�s



zParser._eval_optionscCs�|j�}d|j}tjd||�}|s*dS|j�}|drP|j|ddd
��pVdgf\}}|jt|jd��7_t	d|||dj
dd�d	��S)Nz((%s)|\[([0-9, ]+)\])z\$<((%s:)*)((\\>|[^>])+?)>rr!�eval�z\>�>)rAZdependenciesrGrHrH)r rBr3r.r=rNrrr5rrD)rr'rLr.r=rArMrrrr�s
*zParser._match_evalc
Cs�|j�}d}tjd|j|j||f|�}|s0dS|j�}|drLt|d�pNd}|dpn|drlt|d�pnd}tjdd|d	�}tjdd|d
�}|dp�d}	|jt|j	d��7_t
d|||||	d
��S)Nz((?:\\[/]|\\}|[^/}])+)z?\${(?:(%s):)?\s*(%s|\$([A-Z_]+))?[/]%s[/]%s(?:[/]([a-zA-Z]*))?}rr!r<r"z\\([/}])z\1��rPZregex)rA�input�pattern�substitution�	modifiersrH)r r3r.rBr=rC�subrrr5r)
rr'Zcontentr.r=rAZinprUrVrWrrrr�s zParser._match_regexN)r
rrr4rBr3rJr-rr r#r$r,r/r0rr)rr;r?rrr*rNrrrrrrr"s*	
r)r3rrrrrr�<module>s