o
    Rh1                     @   s   d Z ddlmZmZmZmZmZ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mZ ddgZG dd deZG dd deZdS )	z
    pygments.lexers.varnish
    ~~~~~~~~~~~~~~~~~~~~~~~

    Lexers for Varnish configuration

    :copyright: Copyright 2006-2025 by the Pygments team, see AUTHORS.
    :license: BSD, see LICENSE for details.
    )
RegexLexerincludebygroupsusingthisinheritwords)
TextCommentOperatorKeywordNameStringNumberPunctuationLiteral
WhitespaceVCLLexerVCLSnippetLexerc                   @   sx  e Zd ZdZdZdgZdgZdgZdZdZ	dd	 Z
ed
eddeejeeeefdedfged
eddefdefdefdedfged
deejeejjefdeejeedfdeejeeeefdedfdedfgdejfdejfdejfdejfdejfedddejfd efd!efd"efed#ddefd$ejfed%ejfd&efd'eeejjed(fd)eeejjedfd*eeejjed+fd,eejejefd-eeejefd.eejeejeefd/efgd0ejfd1ejdfd2ejdfd3ejfgd4efd1ejd5fd6efgd7e dfd8e fgd9e fd:e dfd;e fgd<e d=fd>e d?fd@e!fdAe!fdBe"fged
ededCdAe!fgdD
Z#dES )Fr   z3
    For Varnish Configuration Language (VCL).
    VCLvclz*.vclztext/x-vclsrcXhttps://www.varnish-software.com/developers/tutorials/varnish-configuration-language-vcl2.2c                 C   s&   |  drdS d| d d v rdS d S )Nzvcl 4.0;g      ?z	
vcl 4.0;i  g?)
startswithtext r   Y/home/air/sanwanet/backup_V2/venv/lib/python3.10/site-packages/pygments/lexers/varnish.pyanalyse_text   s
   
zVCLLexer.analyse_text
whitespacecommentsz(\.\w+)(\s*=\s*)([^;]*)(;)z\}z#popz[!/]+;z\d+z(\.probe)(\s*=\s*)(\w+)(;)z(\.probe)(\s*=\s*)(\{)probez!(\.\w+\b)(\s*=\s*)([^;\s]*)(\s*;)z\{z#pushz(\d\.)?\d+[sdwhmy]z(\d\.)?\d+msz(vcl_pass|vcl_hash|vcl_hit|vcl_init|vcl_backend_fetch|vcl_pipe|vcl_backend_response|vcl_synth|vcl_deliver|vcl_backend_error|vcl_fini|vcl_recv|vcl_purge|vcl_miss)\bzV(pipe|retry|hash|synth|deliver|purge|abandon|lookup|pass|fail|ok|miss|fetch|restart)\bz8(beresp|obj|resp|req|req_top|bereq)\.http\.[a-zA-Z_-]+\b)?z
obj.statuszreq.hash_always_misszberesp.backendzreq.esi_levelzreq.can_gzipz
beresp.ttlzobj.uncacheablezreq.ttlzobj.hitszclient.identityzreq.hash_ignore_busyz
obj.reasonzreq.xidzreq_top.protoz
beresp.agez	obj.protozobj.agezlocal.ipzberesp.uncacheablez
req.methodzberesp.backend.ipnowz	obj.gracezreq.restartszberesp.keepz	req.protoz
resp.protoz	bereq.xidzbereq.between_bytes_timeoutzreq.esizbereq.first_byte_timeoutzbereq.methodzbereq.connect_timeoutzberesp.do_gzipzresp.statuszberesp.do_gunzipzberesp.storage_hintzresp.is_streamingzberesp.do_streamzreq_top.methodzbereq.backendzberesp.backend.namezberesp.statuszreq.urlzobj.keepzobj.ttlzberesp.reasonzbereq.retrieszresp.reasonz	bereq.urlzberesp.do_esizberesp.protoz	client.ipzbereq.protozserver.hostnamez	remote.ipzreq.backend_hintzserver.identityzreq_top.urlzberesp.gracezberesp.was_304z	server.ipzbereq.uncacheablez\b)suffixz[!%&+*\-,/<.}{>=|~]+z[();]z[,]+)	hash_dataregsub	regsuballifelseelsifelifsynth	syntheticbanreturnsetunsetimportr   newrollbackcallzstorage\.\w+\.\w+\b)truefalsez\d+\bz(backend)(\s+\w+)(\s*\{)backendz(probe\s)(\s*\w+\s)(\{)z(acl\s)(\s*\w+\s)(\{)aclz(vcl )(4.0)(;)$z(sub\s+)([a-zA-Z]\w*)(\s*\{)z+([a-zA-Z_]\w*)(\.)([a-zA-Z_]\w*)(\s*\(.*\))z[a-zA-Z_]\w*z[^*/]+z/\*z\*/z[*/]z#.*$commentz//.*$"z[^"\n]+z[^"}]z"\}z["}]zL?"stringz\{"multistringz\nz\s+z\\\n
statements)
r"   r9   r8   r>   r:   r    r<   r=   r   rootN)$__name__
__module____qualname____doc__namealiases	filenames	mimetypesurlversion_addedr   r   r   r   	Attributer   r   r   r   r   VariableGlobalr   DateFunctionConstantr   r   BuiltinReservedr
   	Multiliner   r   r	   tokensr   r   r   r   r      s    	9



c                   @   sf   e Zd ZdZdZddgZdgZg ZdZdZ	dd	 Z
d
efdejfgdejfgedeedgdZdS )r   z6
    For Varnish Configuration Language snippets.
    VCLSnippetsvclsnippets
vclsnippetztext/x-vclsnippetr   r   c                 C   s   dS )Nr   r   r   r   r   r   r      s   zVCLSnippetLexer.analyse_textz\.\.\.+zN(bereq|req|req_top|resp|beresp|obj|client|server|local|remote|storage)($|\.\*)z(backend)\bsnippetspresnippetspost)rW   rX   r?   N)r@   rA   rB   rC   rD   rE   rG   rF   rH   rI   r   r
   r   rK   r   rQ   r   r   rS   r   r   r   r   r      s*    
N)rC   pygments.lexerr   r   r   r   r   r   r   pygments.tokenr	   r
   r   r   r   r   r   r   r   r   __all__r   r   r   r   r   r   <module>   s    $
0 