3 À<×ebã@sdddlZddlZddlZddlmZddlZddljZddl m Z ej j ƒZ e ƒZGdd„dƒZdS)éNé)Ú repository)Úcommandsc@sZeZdZdZdd„Zddd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dS)Ú Functionsz Built-in functions cCstjƒ|_|jƒdS)N)rZ RepositoryÚ _repositoryÚ _parse_init)Úself©r ú/usr/lib/python3.6/functions.pyÚ__init__s zFunctions.__init__ÚcCs&d|_||_t|ƒ|_g|_d|_dS)NrF)Ú_cntÚ_strÚlenÚ_lenÚ_stackÚ_esc)rÚsr r r rs  zFunctions._parse_initcCs|j|jkr|j|jSdS)Nr )r rr)rr r r Ú _curr_charszFunctions._curr_charcCs|j|j|j|…S)N)rr )rrr r r Ú _curr_substr szFunctions._curr_substrcCs|jj||jfƒdS)N)rÚappendr )rÚescr r r Ú _push_pos#szFunctions._push_poscCsd|jd|…||j|dd…|_t|jƒ|_|jt|ƒ||d7_|jdkr`d|_dS)Nrr)rrrr )rÚaÚbrr r r Ú_sub&s &  zFunctions._subc CsÊtjd|j||j…ƒ}|ddkr(dSdd„|Dƒ}tjd|dƒs\tjd|dƒdSy|jj|dƒ}Wn&t k r–tjd |dƒdSX|j |d d…ƒ}|dkr¶dS|j ||j|ƒdS) Nz(?1sz+Functions._process_func..z\w+$rzinvalid function name '%s'zfunction '%s' not implementedé) ÚreÚsplitrr ÚmatchÚlogÚerrorrZ load_funcÚ ImportErrorZexecuter)rZ_fromZslÚfrr r r Ú _process_func-s  zFunctions._process_funcc CsÔ|j|ƒxª|j|jkr´|jƒdkrpy|jjƒ}Wn$tk rVtjd|ƒ|j SX|dsŠ|j |dƒn|j dƒdkrŠ|j |j ƒ|jƒdkržd|_ nd |_ |jd7_q Wt|jƒrÎtjd |ƒ|j S) Nú}z.invalid variable syntax, non pair '}' in: '%s'rrr"z${ú\TFz.invalid variable syntax, non pair '{' in: '%s')rr rrrÚpopÚ IndexErrorr&r'rr*rrrr)rrZsir r r Ú_process?s&     zFunctions._processcCs(|dks|dkr|Stjdd|j|ƒƒS)Nr z \\(\${f:.*})z\1)r#Úsubr/)rrr r r ÚexpandVszFunctions.expandN)r ) Ú__name__Ú __module__Ú __qualname__Ú__doc__r rrrrrr*r/r1r r r r r s r)Úosr#Zglobr rZ tuned.logsZtunedZ tuned.constsZconstsZtuned.utils.commandsrZlogsÚgetr&Úcmdrr r r r Ús