o
    ;hE                     @   sb   d Z ddlZddlmZmZ ddlmZmZmZm	Z	m
Z
mZmZmZmZ dgZG dd deZdS )z
    pygments.lexers.nix
    ~~~~~~~~~~~~~~~~~~~

    Lexers for the NixOS Nix language.

    :copyright: Copyright 2006-2025 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    N)
RegexLexerinclude)	TextCommentOperatorKeywordNameStringNumberPunctuationLiteralNixLexerc                   @   s$  e Zd ZdZdZdZddgZdgZdgZdZ	g d	Z
g d
Zg dZg dZdejfdejdfdefdddd e
D efdddd eD ejfdejfdejfdejfdefdefdefdddd eD efdejfdedfddd d eD efd!ej d"fd#ejd$fd%efd&ej!fd'efd(ej"d)fgd*ejfdejd+fd,ejd-fd.ejfgd/ej#fd#ejd-fd(ej"d)fd0ejfd1ejfd2ejfd3ejfgd4ej#fd!ej d-fd(ej"d)fd5ej fd6ej fd7ej fd8ej fgd9ej"d-fd(ej"d+fe$d:gd9ed-fe$d:gd;Z%d<d= Z&d>S )?r   z
    For the Nix language.
    Nixzhttp://nixos.org/nix/nixosnixz*.nixz
text/x-nixz2.0)
ZrecwithZletininheritassertifelseZthenz...)importabortZ
baseNameOfZdirOfZisNullbuiltinsmapZremoveAttrsthrowZtoStringZ
derivation)z+++?.!z//z==/z!=z&&z||z->=<>*-)
()[];{}:,@z#.*$z/\*commentz\s+z({})|c                 c       | ]
}t |d  V  qdS z\bNreescape.0entry r:   F/var/www/html/venv/lib/python3.10/site-packages/pygments/lexers/nix.py	<genexpr>5       zNixLexer.<genexpr>c                 c   r2   r3   r4   r7   r:   r:   r;   r<   8   r=   z\b(true|false|null)\bz!-?(\d+\.\d*|\.\d+)([eE][-+]?\d+)?z-?[0-9]+z[\w.+-]*(\/[\w.+-]+)+z~(\/[\w.+-]+)+z\<[\w.+-]+(\/[\w.+-]+)*\>c                 c       | ]}t |V  qd S Nr4   r7   r:   r:   r;   r<   I       z\b(or|and)\bz\{blockc                 c   r>   r?   r4   r7   r:   r:   r;   r<   R   r@   "doublequotez''	multilinez4[a-zA-Z][a-zA-Z0-9\+\-\.]*\:[\w%/?:@&=+$,\\.!~*\'-]+z[\w-]+(?=\s*=)z[a-zA-Z_][\w\'-]*z\$\{	antiquotez[^/*]+z#pushz\*/z#popz[*/]z''(\$|'|\\n|\\r|\\t|\\)z[^'\$]+z\$[^\{']z'[^']z\$(?=')z\\(\\|"|\$|n)z	[^"\\\$]+z\$[^\{"]z\$(?=")z\\z\}root)rF   r0   rD   rC   rE   rA   c                 C   sX   d}t d| r|d7 }t d| r|d7 }t d| r |d7 }t d| r*|d7 }|S )Ng        zimport.+?<[^>]+>g?zmkDerivation\s+(\(|\{|rec)z=\s+mkIf\s+z\{[a-zA-Z,\s]+\}:g?)r5   search)textrvr:   r:   r;   analyse_text   s   zNixLexer.analyse_textN)'__name__
__module____qualname____doc__nameurlaliases	filenames	mimetypesversion_addedkeywordsr   	operatorsZpunctuationsr   Single	Multiliner   formatjoinr   r   BuiltinConstantr
   FloatIntegerr   r   Wordr   r	   DoubleSymbolInterpolEscaper   tokensrJ   r:   r:   r:   r;   r      s    



8









\)rN   r5   Zpygments.lexerr   r   Zpygments.tokenr   r   r   r   r   r	   r
   r   r   __all__r   r:   r:   r:   r;   <module>   s    
,