o
    ‡ÎÖaK  ã                   @   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 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-2021 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ÚVCLLexerÚVCLSnippetLexerc                   @   sp  e Zd ZdZdZdgZdgZdg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d.ejfd/ejdfd0ejdfd1ejfgd2efd/ejd3fd4efgd5edfd6efgd7efd8edfd9efgd:ed;fd<ed=fd>efd?efd@efge	dƒe	d	ƒe	dAƒd?efgdBœ
Z dCS )Dr   zN
    For Varnish Configuration Language (VCL).

    .. versionadded:: 2.2
    ÚVCLÚvclz*.vclztext/x-vclsrcc                 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   ú9/usr/lib/python3/dist-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   r6   r5   r;   r7   r   r9   r:   r   ÚrootN)!Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameÚaliasesÚ	filenamesÚ	mimetypesr   r   r   r   Ú	Attributer   r   r   r   r   ÚVariableÚGlobalr   ÚDateÚFunctionÚConstantr   r   ÚBuiltinÚReservedr
   Ú	Multiliner   r	   Útokensr   r   r   r   r      sÖ    ÿûú	ÿÿÿ÷þÿðïýüÿÿÿÿÿüÊ9

ü
ýþýûü
’c                   @   s^   e Zd ZdZdZddgZdgZg 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   zQ
    For Varnish Configuration Language snippets.

    .. versionadded:: 2.2
    ÚVCLSnippetsÚvclsnippetsÚ
vclsnippetztext/x-vclsnippetc                 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)rR   rS   r<   N)r=   r>   r?   r@   rA   rB   rD   rC   r   r
   r   rF   r   rL   r   r   rN   r   r   r   r   r       s&    ÿþÿý
÷N)r@   Úpygments.lexerr   r   r   r   r   r   r   Úpygments.tokenr	   r
   r   r   r   r   r   r   r   Ú__all__r   r   r   r   r   r   Ú<module>   s    $
, 