File: //lib/python3/dist-packages/pygments/lexers/__pycache__/varnish.cpython-311.pyc
�
�E�ci � � � d Z ddlmZmZmZmZmZmZmZ ddl m
Z
mZmZm
Z
mZmZmZmZmZmZ ddgZ G d� de� � Z G d� de� � ZdS ) z�
pygments.lexers.varnish
~~~~~~~~~~~~~~~~~~~~~~~
Lexers for Varnish configuration
:copyright: Copyright 2006-2022 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 � � e Zd ZdZdZdgZdgZdgZd� Z e d� � e d� � d e
ej e
ee� � e� � fd
edfg e d� � e d� � de
fd
efdefd
edfg e d� � d e
ej e
ej j e� � fd e
ej e
e� � dfd e
ej e
ee� � e� � fdedfd
edfgdej fdej fdej fdej fdej f edd�� � ej fde
fdefdef ed d�� � efd!ej f ed"� � ej fd#efd$ e
eej j e� � d%fd& e
eej j e� � dfd' e
eej j e� � d(fd) e
ej ej e� � fd* e
eej e� � fd+ e
ej eej ee� � � � fd,efgd-ej fd.ej dfd/ej dfd0ej fgd1efd.ej d2fd3efgd4edfd5efgd6efd7edfd8efgd9ed:fd;ed<fd=efd>efd?e fg e d� � e d� � e d@� � d>efgdA�
Z!dBS )Cr zN
For Varnish Configuration Language (VCL).
.. versionadded:: 2.2
�VCL�vclz*.vclz
text/x-vclsrcc �P � | � d� � rdS d| d d� v rdS d S )Nzvcl 4.0;g �?z
vcl 4.0;i� g�������?)�
startswith��texts �9/usr/lib/python3/dist-packages/pygments/lexers/varnish.py�analyse_textzVCLLexer.analyse_text s? � � �?�?�:�&�&� ��3� �T�%�4�%�[�
(�
(��3� )�
(� �
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.statuszreq.hash_always_misszberesp.backendz
req.esi_levelzreq.can_gzipz
beresp.ttlzobj.uncacheablezreq.ttlzobj.hitszclient.identityzreq.hash_ignore_busyz
obj.reasonzreq.xidz
req_top.protoz
beresp.agez obj.protozobj.agezlocal.ipzberesp.uncacheablez
req.methodzberesp.backend.ip�nowz obj.gracezreq.restartszberesp.keepz req.protoz
resp.protoz bereq.xidzbereq.between_bytes_timeoutzreq.esizbereq.first_byte_timeoutzbereq.methodzbereq.connect_timeoutzberesp.do_gzipzresp.statuszberesp.do_gunzipzberesp.storage_hintzresp.is_streamingzberesp.do_streamzreq_top.methodz
bereq.backendzberesp.backend.namez
beresp.statuszreq.urlzobj.keepzobj.ttlz
beresp.reasonz
bereq.retrieszresp.reasonz bereq.urlz
beresp.do_esizberesp.protoz client.ipzbereq.protozserver.hostnamez remote.ipzreq.backend_hintzserver.identityzreq_top.urlzberesp.gracezberesp.was_304z server.ipzbereq.uncacheablez\b)�suffixz[!%&+*\-,/<.}{>=|~]+z[();]z[,]+)� hash_data�regsub� regsuball�if�else�elsif�elif�synth� synthetic�ban�return�set�unset�importr �new�rollback�callzstorage\.\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["}]zL?"�stringz\{"�multistringz\nz\s+z\\\n�
statements)
r# r: r9 r? r; r! r= r>