a
    ûb  ã                   @   st   d dl mZ ddlmZmZmZmZmZmZm	Z	m
Z
mZmZ ddlmZ G dd„ deƒZdd„ ZG d	d
„ d
eƒZdS )é    )Úabsolute_importé   )
ÚAltÚSeqÚRepÚRep1ÚOptÚAnyÚAnyButÚBolÚEolÚChar)Ú	PlexErrorc                   @   s   e Zd ZdS )ÚRegexpSyntaxErrorN)Ú__name__Ú
__module__Ú__qualname__© r   r   úg/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/Cython/Plex/Traditional.pyr      s   r   c                 C   s   t | ƒ ¡ S )zk
    Convert traditional string representation of regular expression |s|
    into Plex representation.
    )ÚREParserÚparse_re)Úsr   r   r   Úre   s    r   c                   @   sl   e Zd Z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d„ Zdd„ Zdd„ Zdd„ ZdS )r   c                 C   s   || _ d| _d| _|  ¡  d S )Néÿÿÿÿr   )r   ÚiÚendÚnext)Úselfr   r   r   r   Ú__init__   s    zREParser.__init__c                 C   s&   |   ¡ }| js"|  dt| jƒ ¡ |S )NzUnexpected %s)Ú	parse_altr   ÚerrorÚreprÚc©r   r   r   r   r   r   "   s    zREParser.parse_rec                 C   sF   |   ¡ }| jdkrB|g}| jdkr:|  ¡  | |   ¡ ¡ qt|Ž }|S )z#Parse a set of alternative regexps.ú|)Ú	parse_seqr"   r   Úappendr   )r   r   Úre_listr   r   r   r   (   s    

zREParser.parse_altc                 C   s,   g }| j s$| jdvr$| |  ¡ ¡ qt|Ž S )zParse a sequence of regexps.z|))r   r"   r&   Ú	parse_modr   )r   r'   r   r   r   r%   3   s    zREParser.parse_seqc                 C   sV   |   ¡ }| jsR| jdv rR| jdkr,t|ƒ}n| jdkr@t|ƒ}nt|ƒ}|  ¡  q|S )z7Parse a primitive regexp followed by *, +, ? modifiers.z*+?Ú*ú+)Ú
parse_primr   r"   r   r   r   r   r#   r   r   r   r(   :   s    




zREParser.parse_modc                 C   sŠ   |   ¡ }|dkrtdƒ}nl|dkr(t}n^|dkr6t}nP|dkrR|  ¡ }|  d¡ n4|dkrn|  ¡ }|  d¡ n|d	kr~|   ¡ }t|ƒ}|S )
zParse a primitive regexp.Ú.Ú
ú^ú$ú(ú)ú[ú]ú\)Úgetr
   r   r   r   ÚexpectÚparse_charsetr   )r   r"   r   r   r   r   r+   G   s"    
zREParser.parse_primc                 C   sÔ   g }d}| j dkrd}|  ¡  | j dkr:| d¡ |  ¡  | js²| j dkr²|  ¡ }| j dkr¦|  d¡dkr¦|  ¡  |  ¡ }tt|ƒt|ƒd ƒD ]}| t|ƒ¡ qq:| |¡ q:d 	|¡}|rÈt
|ƒS t|ƒS dS )z5Parse a charset. Does not include the surrounding [].r   r.   r   r3   ú-Ú N)r"   r   r&   r   r5   Ú	lookaheadÚrangeÚordÚchrÚjoinr
   r	   )r   Z	char_listÚinvertZc1Úc2ÚaÚcharsr   r   r   r7   \   s(    



zREParser.parse_charsetc                 C   s>   | j }| jd  }| _|t|ƒk r.|| | _nd| _d| _dS )zAdvance to the next char.r   r9   N)r   r   Úlenr"   r   )r   r   r   r   r   r   r   u   s    zREParser.nextc                 C   s"   | j r|  d¡ | j}|  ¡  |S )NzPremature end of string)r   r    r"   r   ©r   r"   r   r   r   r5      s
    
zREParser.getc                 C   s*   | j | }|t| jƒk r"| j| S dS dS )zLook ahead n chars.r9   N)r   rC   r   )r   ÚnÚjr   r   r   r:   †   s    

zREParser.lookaheadc                 C   s*   | j |kr|  ¡  n|  dt|ƒ ¡ dS )zj
        Expect to find character |c| at current position.
        Raises an exception otherwise.
        z
Missing %sN)r"   r   r    r!   rD   r   r   r   r6   Ž   s    

zREParser.expectc                 C   s   t dt| jƒ| j|f ƒ‚dS )z1Raise exception to signal syntax error in regexp.z,Syntax error in regexp %s at position %d: %sN)r   r!   r   r   )r   Zmessr   r   r   r    ˜   s    ÿzREParser.errorN)r   r   r   r   r   r   r%   r(   r+   r7   r   r5   r:   r6   r    r   r   r   r   r      s   

r   N)Ú
__future__r   ZRegexpsr   r   r   r   r   r	   r
   r   r   r   ZErrorsr   r   r   Úobjectr   r   r   r   r   Ú<module>	   s
   0