/ lib / pygments / regexopt.pyc
regexopt.pyc
 1  o

 2   ��c�@sldZddlZddlmZddlmZddlmZddlmZe�	d�Z
 3  ed�Zdd	�Zd
 4  d�Z
dd
d�ZdS)a
 5      pygments.regexopt
 6      ~~~~~~~~~~~~~~~~~
 7  
 8      An algorithm that generates optimized regexes for matching long lists of
 9      literal strings.
10  
11      :copyright: Copyright 2006-2022 by the Pygments team, see AUTHORS.
12      :license: BSD, see LICENSE for details.
13  �N)�escape)�commonprefix)�groupby)�
14  itemgetterz[\[\^\\\-\]]cCsdt�dd�d�|��dS)N�[cSsd|��S)N�\)�group)�m�r
15  ��C:\Users\Jacks.GUTTSPC\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\pygments\regexopt.py�<lambda>szmake_charset.<locals>.<lambda>��])�	CS_ESCAPE�sub�join)�lettersr
16  r
17  r�make_charsetsrc		s�|rdpd}|s
18  dS|d�t|�dkr|t��|S�s-|t|dd�d�d|St��dkrlg}g}|D]}t|�dkrG|�|�q9|�|�q9t|�dkrl|rd|t|d�dt|�|S|t|�|St|�}|r�t|��|t|�t�fd	d
19  �|D�d�|Sdd
20  �|D�}t|�}|r�t|��|tt�fdd
�|D��d�t|ddd��|S|d�dd
�t|�fdd��D��|S)zEReturn a regex that matches any string in the sorted list of strings.�)r
r�Nz(?:�?�|csg|]}|�d��qS�Nr
21  ��.0�s)�plenr
22  r�
23  <listcomp>?sz#regex_opt_inner.<locals>.<listcomp>cSsg|]	}|ddd��qS)N�����r
24  rr
25  r
26  rrBsc3s�|]
27  }|d��VqdSrr
28  r)�slenr
29  r�	<genexpr>Hs�z"regex_opt_inner.<locals>.<genexpr>rcss"�|]}tt|d�d�VqdS)rr
N)�regex_opt_inner�list)rrr
30  r
31  rr Ms��cs|d�dkS)Nrr
32  )r)�firstr
33  rrNsz!regex_opt_inner.<locals>.<lambda>)	�lenrr!�appendrr�sortedrr)	�stringsZ
34  open_parenZclose_parenZ	oneletter�restr�prefixZstrings_rev�suffixr
35  )r#rrrr!sj����
36  �����
37  ���r!r
cCst|�}|t|d�|S)z�Return a compiled regex that matches any string in the given list.
38  
39      The strings to match must be literal strings, not regexes.  They will be
40      regex-escaped.
41  
42      *prefix* and *suffix* are pre- and appended to the final regex.
43      �()r&r!)r'r)r*r
44  r
45  r�	regex_optRsr,)r
r
)�__doc__�rer�os.pathr�	itertoolsr�operatorr�compiler�
FIRST_ELEMENTrr!r,r
46  r
47  r
48  r�<module>s
49  8