<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3
À<×eb  ã               @   sd   d dl Z d dlZd dlZddlmZ d dlZd dljZd dl	m
Z
 ejjƒ Ze
ƒ ZG dd„ dƒZdS )é    Né   )Ú
repository)Úcommandsc               @   sZ   e Zd ZdZdd„ Zddd„Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )Ú	Functionsz
	Built-in functions
	c             C   s   t jƒ | _| jƒ  d S )N)r   Z
RepositoryÚ_repositoryÚ_parse_init)Úself© r	   ú/usr/lib/python3.6/functions.pyÚ__init__   s    
zFunctions.__init__Ú c             C   s&   d| _ || _t|ƒ| _g | _d| _d S )Nr   F)Ú_cntÚ_strÚlenÚ_lenÚ_stackÚ_esc)r   Úsr	   r	   r
   r      s
    
zFunctions._parse_initc             C   s   | j | jk r| j| j  S dS )Nr   )r   r   r   )r   r	   r	   r
   Ú
_curr_char   s    zFunctions._curr_charc             C   s   | j | j| j| … S )N)r   r   )r   r   r	   r	   r
   Ú_curr_substr    s    zFunctions._curr_substrc             C   s   | j j|| jfƒ d S )N)r   Úappendr   )r   Úescr	   r	   r
   Ú	_push_pos#   s    zFunctions._push_posc             C   sd   | j d |… | | j |d d …  | _ t| j ƒ| _|  jt|ƒ|| d  7  _| jdk r`d| _d S )Nr   r   )r   r   r   r   )r   ÚaÚbr   r	   r	   r
   Ú_sub&   s
    &
zFunctions._subc             C   sÊ   t jd| j|| j… ƒ}|d dkr(d S dd„ |D ƒ}t jd|d ƒs\tjd|d  ƒ d S y| jj|d ƒ}W n& t	k
r–   tjd	|d  ƒ d S X |j
|d
d … ƒ}|d kr¶d S | j|| j|ƒ d S )Nz(?<!\\):r   z${fc             S   s   g | ]}t |ƒjd dƒ‘qS )z\:ú:)ÚstrÚreplace)Ú.0Úvr	   r	   r
   ú
<listcomp>1   s    z+Functions._process_func.<locals>.<listcomp>z\w+$r   zinvalid function name '%s'zfunction '%s' not implementedé   )ÚreÚsplitr   r   ÚmatchÚlogÚerrorr   Z	load_funcÚImportErrorZexecuter   )r   Z_fromZslÚfr   r	   r	   r
   Ú_process_func-   s     zFunctions._process_funcc             C   sÔ   | j |ƒ xª| j| jk r´| jƒ dkrpy| jjƒ }W n$ tk
rV   tjd| ƒ | j	S X |d sŠ| j
|d ƒ n| jdƒdkrŠ| j| jƒ | jƒ dkržd| _nd	| _|  jd7  _qW t| jƒrÎtjd
| ƒ | j	S )Nú}z.invalid variable syntax, non pair '}' in: '%s'r   r   r"   z${ú\TFz.invalid variable syntax, non pair '{' in: '%s')r   r   r   r   r   ÚpopÚ
IndexErrorr&   r'   r   r*   r   r   r   r   )r   r   Zsir	   r	   r
   Ú_process?   s&    

zFunctions._processc             C   s(   |d ks|dkr|S t jdd| j|ƒƒS )Nr   z\\(\${f:.*})z\1)r#   Úsubr/   )r   r   r	   r	   r
   ÚexpandV   s    zFunctions.expandN)r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r*   r/   r1   r	   r	   r	   r
   r      s   
r   )Úosr#   Zglobr   r   Z
tuned.logsZtunedZtuned.constsZconstsZtuned.utils.commandsr   ZlogsÚgetr&   Úcmdr   r	   r	   r	   r
   Ú<module>   s   

