summaryrefslogtreecommitdiffstats
path: root/kate/data/varnishtest.xml
diff options
context:
space:
mode:
Diffstat (limited to 'kate/data/varnishtest.xml')
-rw-r--r--kate/data/varnishtest.xml482
1 files changed, 482 insertions, 0 deletions
diff --git a/kate/data/varnishtest.xml b/kate/data/varnishtest.xml
new file mode 100644
index 000000000..a512d15c4
--- /dev/null
+++ b/kate/data/varnishtest.xml
@@ -0,0 +1,482 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE language SYSTEM "language.dtd">
+<language name="Varnish Test Case language" version="0.2" kateversion="2.5" section="Configuration" extensions="*.vtc;" mimetype="" author="Xavier Guerrin (xavier@tuxfamily.org)" license="WTFPL">
+ <highlighting>
+ <list name="vtcClientKeywords">
+ <item>fatal</item>
+ <item>gunzip</item>
+ <item>rxchunk</item>
+ </list>
+ <list name="vtcServerKeywords">
+ <item>accept</item>
+ <item>close</item>
+ <item>expect_close</item>
+ <item>fatal</item>
+ <item>rxbody</item>
+ <item>rxhdrs</item>
+ <item>rxreq</item>
+ </list>
+ <contexts>
+ <!-- default context: define main keywords -->
+ <context name="vtcnormal_text" attribute="Normal Text" lineEndContext="#stay">
+ <IncludeRules context="global_directives_restricted" />
+ <IncludeRules context="global_directives" />
+ </context>
+
+ <!-- directives that can be encountered at global scope but not within a loop -->
+ <context name="global_directives_restricted" attribute="Normal Text" lineEndContext="#stay">
+ <StringDetect firstNonSpace="true" attribute="Keyword" context="varnishtest_declaration" String="varnishtest" />
+ <StringDetect firstNonSpace="true" attribute="Keyword" context="feature_instruction" String="feature" />
+ <RegExpr attribute="Keyword" context="#stay" String="^\s*random\s*$" />
+ </context>
+
+ <!-- directives that can be encountered at global scope, either directly or within a loop -->
+ <context name="global_directives" attribute="Normal Text" lineEndContext="#stay">
+ <IncludeRules context="comments" />
+ <StringDetect firstNonSpace="true" attribute="Keyword" context="client_declaration" String="client" />
+ <StringDetect firstNonSpace="true" attribute="Keyword" context="server_declaration" String="server" />
+ <StringDetect firstNonSpace="true" attribute="Keyword" context="varnish_declaration" String="varnish" />
+ <StringDetect firstNonSpace="true" attribute="Keyword" context="sema_instruction" String="sema" />
+ <StringDetect firstNonSpace="true" attribute="Keyword" context="shell_instruction" String="shell" />
+ <StringDetect firstNonSpace="true" attribute="Keyword" context="delay_instruction" String="delay" />
+ <StringDetect firstNonSpace="true" attribute="Keyword" context="global_loop_instruction" String="loop" />
+ </context>
+
+ <!-- Strings delimited with double quotes -->
+ <context name="strings" attribute="Normal Text" lineEndContext="#stay">
+ <DetectChar char="&quot;" context="string" attribute="String" />
+ </context>
+ <context name="string" attribute="String" lineEndContext="#pop">
+ <Detect2Chars attribute="String" context="#stay" char="\" char1="&quot;" />
+ <DetectChar attribute="String" context="#pop" char="&quot;" />
+ </context>
+
+ <!-- The following contexts (quoted-, brace- and unquoted- strings) make their parent pop as soon as they parsed a string. -->
+ <context name="quoted-strings" attribute="Normal Text" lineEndContext="#stay">
+ <DetectChar char="&quot;" context="quoted-string" attribute="String" />
+ </context>
+ <context name="quoted-string" attribute="String" lineEndContext="#pop#pop">
+ <Detect2Chars attribute="String" context="#stay" char="\" char1="&quot;" />
+ <DetectChar attribute="String" context="#pop#pop" char="&quot;" />
+ </context>
+
+ <context name="brace-strings" attribute="Normal Text" lineEndContext="#pop">
+ <DetectChar attribute="String" context="brace-string" char="{" beginRegion="string_block" />
+ </context>
+ <context name="brace-string" attribute="String" lineEndContext="#stay">
+ <!--
+ strings delimited with braces do not require to escape closing braces;
+ therefore, we have to use an extra context to keep track of opening and closing braces
+ -->
+ <DetectChar attribute="String" context="brace-string-internal" char="{" />
+ <DetectChar attribute="String" context="#pop#pop" char="}" endRegion="string_block" />
+ </context>
+ <context name="brace-string-internal" attribute="String" lineEndContext="#stay">
+ <DetectChar attribute="String" context="#pop" char="}" />
+ </context>
+
+ <context name="unquoted-strings" attribute="String" lineEndContext="#pop">
+ <RegExpr attribute="String" context="unquoted-string" String="[^ ]" />
+ </context>
+ <context name="unquoted-string" attribute="String" lineEndContext="#pop#pop">
+ <RegExpr attribute="Normal Text" context="#pop#pop" String="\s" />
+ </context>
+
+ <!-- This context exits as soon as it parsed a string, be it defined between braces, quotes or spaces -->
+ <context name="string-arg" attribute="Normal Text" lineEndContext="#stay">
+ <IncludeRules context="brace-strings" />
+ <IncludeRules context="quoted-strings" />
+ <IncludeRules context="unquoted-strings" />
+ </context>
+
+ <!-- This context exits as soon as it parsed an integer. -->
+ <context name="int-arg" attribute="Int" lineEndContext="#pop">
+ <Int attribute="Decimal" context="#pop" />
+ </context>
+
+ <!-- Comments -->
+ <context name="shell-like-comment" attribute="Comment" lineEndContext="#pop">
+ <IncludeRules context="##Alerts" />
+ <IncludeRules context="##Modelines" />
+ </context>
+ <context name="comments" attribute="Comment" lineEndContext="#pop">
+ <DetectChar char="#" context="shell-like-comment" attribute="Comment" />
+ </context>
+
+ <!-- Define base elements that used within various contexts -->
+ <context name="base_elements" attribute="Normal Text" lineEndContext="#stay">
+ <RegExpr attribute="HTTP announce" context="#stay" String="HTTP/[0-9.]+" />
+ <RegExpr attribute="HTTP method" context="#stay" String="\s+(GET|HEAD|POST|PUT|DELETE|TRACE|OPTIONS|CONNECT|PATCH)" />
+ <RegExpr attribute="HTTP WebDAV method" context="#stay" String="\s+(PROPFIND|PROPPATCH|MKCOL|COPY|MOVE|LOCK|UNLOCK|CONNECT|PATCH)" />
+ <RegExpr attribute="HTTP custom method" context="#stay" String="\s+(PURGE|PURGESTR)" />
+ <Float attribute="Float" context="#stay" />
+ <Int attribute="Decimal" context="#stay" />
+ <IncludeRules context="strings" />
+ <IncludeRules context="comments" />
+ </context>
+
+ <!-- Define syntax within -expect options -->
+ <context name="expectation_common" attribute="Normal Text" lineEndContext="#stay">
+ <RegExpr attribute="Keyword" context="#stay" String="&lt;undef>" />
+ <IncludeRules context="base_elements" />
+ <IncludeRules context="vcl_operators" />
+ </context>
+
+ <context name="expectation" attribute="String" lineEndContext="#pop">
+ <IncludeRules context="expectation_common" />
+ <IncludeRules context="vcl_variables" />
+ </context>
+
+ <context name="varnish_expectation" attribute="Normal Text" lineEndContext="#pop">
+ <IncludeRules context="expectation_common" />
+ <IncludeRules context="varnishstat_variables" />
+ </context>
+
+ <!-- Define macros -->
+ <context name="macro_accepted" attribute="String" lineEndContext="#pop">
+ <Detect2Chars char="$" char1="{" attribute="String" context="macro_identifier" />
+ </context>
+ <context name="macro_identifier" attribute="String" lineEndContext="#pop#pop">
+ <DetectChar char="}" attribute="String" context="#pop" />
+ </context>
+
+ <!-- Define syntax for main keywords' options -->
+ <context name="common_options" attribute="Normal Text" lineEndContext="#stay">
+ <IncludeRules context="macro_accepted" />
+ <IncludeRules context="base_elements" />
+ </context>
+
+ <context name="client_options" attribute="Normal Text" lineEndContext="#stay">
+ <RegExpr attribute="Keyword" context="#stay" String="\-(?:run|wait|start|connect)" />
+ <RegExpr attribute="Keyword" context="expectation" String="-expect" />
+ <IncludeRules context="common_options" />
+ </context>
+
+ <context name="server_options" attribute="Normal Text" lineEndContext="#stay" >
+ <RegExpr attribute="Keyword" context="#stay" String="\-(?:start|wait|stop|repeat)" />
+ <RegExpr attribute="Keyword" context="expectation" String="-expect" />
+ <IncludeRules context="common_options" />
+ </context>
+
+ <context name="varnish_options" attribute="Normal Text" lineEndContext="#stay" >
+ <RegExpr attribute="Keyword" context="#stay" String="\-(?:start|stop|wait|wait-running|wait-stopped)" />
+ <RegExpr attribute="Keyword" context="string-arg" String="\-(?:arg|cli|cliok|storage) " />
+ <RegExpr attribute="Keyword" context="clierr_options" String="\-clierr " />
+ <RegExpr attribute="Keyword" context="varnish_expectation" String="-expect" />
+ <IncludeRules context="common_options" />
+ </context>
+
+ <context name="clierr_options" attribute="Normal Text" lineEndContext="#pop">
+ <!-- unlike clikok, clierr requires an integer argument first -->
+ <Int attribute="Decimal" context="clierr_command" />
+ <IncludeRules context="comments" />
+ </context>
+ <context name="clierr_command" attribute="String" lineEndContext="#pop">
+ <IncludeRules context="comments" />
+ </context>
+
+ <!-- Define syntax for the client-specific txreq keyword -->
+ <context name="txreq_options" attribute="String" lineEndContext="#pop">
+ <IncludeRules context="comments" />
+ <RegExpr attribute="TxReq Keyword" context="string-arg" String="\-(?:body|hdr|proto|req|url)" />
+ <LineContinue attribute="Normal Text" context="#stay" />
+ </context>
+
+ <!-- Define syntax for the client-specific rxresp keyword -->
+ <context name="rxresp_options" attribute="Normal Text" lineEndContext="#pop">
+ <StringDetect attribute="RxResp Keyword" String="-no_obj" />
+ <LineContinue attribute="Normal Text" context="#stay" />
+ </context>
+
+ <!-- Define syntax for the server-specific txresp keyword -->
+ <context name="txresp_options" attribute="Normal Text" lineEndContext="#pop">
+ <IncludeRules context="comments" />
+ <RegExpr attribute="TxResp Keyword" String="-nolen" />
+ <RegExpr attribute="TxResp Keyword" context="string-arg" String="\-(?:body|gzipbody|hdr|proto|msg) " />
+ <RegExpr attribute="TxResp Keyword" context="int-arg" String="\-(?:bodylen|gzip(?:len|residual|level)|status)" />
+ <LineContinue attribute="Normal Text" context="#stay" />
+ </context>
+
+ <!-- varnishtest keyword -->
+ <context name="varnishtest_declaration" attribute="Normal Text" lineEndContext="#pop">
+ <IncludeRules context="strings" />
+ <IncludeRules context="comments" />
+ </context>
+
+ <!-- client keyword -->
+ <context name="client_declaration" attribute="Normal Text" lineEndContext="#pop">
+ <DetectIdentifier attribute="Client Identifier" context="client_identified" />
+ </context>
+ <context name="client_identified" attribute="String" lineEndContext="#pop">
+ <IncludeRules context="client_options" />
+ <DetectChar attribute="Region Marker" context="client_definition" char="{" beginRegion="client_block" />
+ <LineContinue attribute="Normal Text" context="#stay" />
+ </context>
+ <context name="client_definition" attribute="Normal Text" lineEndContext="#stay">
+ <IncludeRules context="comments" />
+ <!-- basic keywords that take no options -->
+ <keyword attribute="Action Keyword" context="#stay" String="vtcClientKeywords" />
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="#stay" String="non-fatal" />
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="expectation" String="expect" />
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="txreq_options" String="txreq" />
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="rxresp_options" String="rxresp" />
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="sema_instruction" String="sema" />
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="delay_instruction" String="delay" />
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="send_instruction" String="sendhex" />
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="send_instruction" String="send" />
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="timeout_instruction" String="timeout" />
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="client_loop_instruction" String="loop" />
+ <DetectChar attribute="Region Marker" context="client_postdefinition" char="}" endRegion="client_block" />
+ </context>
+ <context name="client_postdefinition" attribute="Normal Text" lineEndContext="#pop#pop#pop#pop">
+ <IncludeRules context="client_options" />
+ </context>
+
+ <!-- server keyword -->
+ <context name="server_declaration" attribute="Normal Text" lineEndContext="#pop">
+ <DetectIdentifier attribute="Server Identifier" context="server_identified" />
+ </context>
+ <context name="server_identified" attribute="String" lineEndContext="#pop">
+ <IncludeRules context="server_options" />
+ <DetectChar attribute="Region Marker" context="server_definition" char="{" beginRegion="server_block" />
+ <LineContinue attribute="Normal Text" context="#stay" />
+ </context>
+ <context name="server_definition" attribute="Normal Text" lineEndContext="#stay">
+ <IncludeRules context="comments" />
+ <!-- basic keywords that take no options -->
+ <keyword attribute="Action Keyword" context="#stay" String="vtcServerKeywords" />
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="#stay" String="non-fatal" />
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="expectation" String="expect" />
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="txresp_options" String="txresp" />
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="sema_instruction" String="sema" />
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="delay_instruction" String="delay" />
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="chunkedlen_instruction" String="chunkedlen" />
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="send_instruction" String="sendhex" />
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="send_instruction" String="send" />
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="send_instruction" String="chunked" />
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="timeout_instruction" String="timeout" />
+ <StringDetect firstNonSpace="true" attribute="Action Keyword" context="server_loop_instruction" String="loop" />
+ <DetectChar attribute="Region Marker" context="server_postdefinition" char="}" endRegion="server_block" />
+ </context>
+ <context name="server_postdefinition" attribute="Normal Text" lineEndContext="#pop#pop#pop#pop">
+ <IncludeRules context="server_options" />
+ </context>
+
+ <!-- varnish keyword -->
+ <context name="varnish_declaration" attribute="Normal Text" lineEndContext="#pop">
+ <DetectIdentifier attribute="Varnish Identifier" context="varnish_identified" />
+ </context>
+ <context name="varnish_identified" attribute="Normal Text" lineEndContext="#pop">
+ <IncludeRules context="varnish_options" />
+ <RegExpr attribute="Keyword" context="varnish_vclannounced" String="\s*\-(?:bad)?vcl(?:\+backend)?" />
+ <LineContinue attribute="Normal Text" context="#stay" />
+ </context>
+ <context name="varnish_vclannounced" attribute="Normal Text" lineEndContext="#stay">
+ <DetectChar attribute="Region Marker" context="varnish_vcldefinition" char="{" beginRegion="varnish_block" />
+ </context>
+ <context name="varnish_vcldefinition" attribute="Normal Text" lineEndContext="#stay">
+ <IncludeRules context="##Varnish Configuration Language" />
+ <!-- varnish.xml may lack a few properties such as req/bereq/obj.{keep,ttl,grace}-->
+ <!-- also, according to v00033.vtc, storage.xxxx.{free,used}_space are correct Varnish properties;
+ + have a look at the B/KB/MB/GB/TB notation and everything related to storage.* -->
+ <!-- basically, all v*.vtc files can teach us something about VCL since this is what they test -->
+ <DetectChar attribute="Region Marker" context="varnish_postvcldefinition" char="}" endRegion="varnish_block" />
+ </context>
+ <context name="varnish_postvcldefinition" attribute="Normal Text" lineEndContext="#pop#pop#pop#pop#pop">
+ <IncludeRules context="varnish_options" />
+ </context>
+
+ <!-- sema keyword -->
+ <context name="sema_instruction" attribute="Normal Text" lineEndContext="#pop">
+ <DetectIdentifier attribute="Sema Identifier" context="sema_identified" />
+ </context>
+ <context name="sema_identified" attribute="Normal Text" lineEndContext="#pop#pop">
+ <RegExpr attribute="Keyword" String="sync" />
+ <Int attribute="Decimal" context="#stay" />
+ <IncludeRules context="comments" />
+ </context>
+
+ <!-- delay keyword -->
+ <context name="delay_instruction" attribute="Normal Text" lineEndContext="#pop">
+ <Int attribute="Decimal" context="#stay" />
+ <Float attribute="Float" context="#stay" />
+ <IncludeRules context="comments" />
+ </context>
+
+ <!-- feature keyword -->
+ <context name="feature_instruction" attribute="String" lineEndContext="#pop">
+ <IncludeRules context="strings" />
+ <IncludeRules context="comments" />
+ </context>
+
+ <!-- chunkedlen keyword -->
+ <context name="chunkedlen_instruction" attribute="Normal Text" lineEndContext="#pop">
+ <Int attribute="Decimal" context="#stay" />
+ <IncludeRules context="comments" />
+ </context>
+
+ <!-- send / sendhex / chunk keywords -->
+ <context name="send_instruction" attribute="Normal Text" lineEndContext="#pop">
+ <IncludeRules context="string-arg" />
+ <IncludeRules context="comments" />
+ </context>
+
+ <!-- timeout keyword -->
+ <context name="timeout_instruction" attribute="Normal Text" lineEndContext="#pop">
+ <IncludeRules context="int-arg" />
+ <IncludeRules context="comments" />
+ </context>
+
+ <!-- loop keyword at global scope -->
+ <context name="global_loop_instruction" attribute="Normal Text" lineEndContext="#stay">
+ <Int attribute="Decimal" context="global_loop_defined" />
+ </context>
+ <context name="global_loop_defined" attribute="Normal Text" lineEndContext="#stay">
+ <DetectChar attribute="Region Marker" context="global_loop_code" char="{" beginRegion="loop_block" />
+ </context>
+ <context name="global_loop_code" attribute="Normal Text" lineEndContext="#stay">
+ <DetectChar attribute="Region Marker" context="#pop#pop#pop" char="}" endRegion="loop_block" />
+ <IncludeRules context="global_directives" />
+ </context>
+
+ <!-- loop keyword for client definitions -->
+ <context name="client_loop_instruction" attribute="Normal Text" lineEndContext="#stay">
+ <Int attribute="Decimal" context="client_loop_defined" />
+ </context>
+ <context name="client_loop_defined" attribute="Normal Text" lineEndContext="#stay">
+ <DetectChar attribute="Region Marker" context="client_loop_code" char="{" beginRegion="loop_block" />
+ </context>
+ <context name="client_loop_code" attribute="Normal Text" lineEndContext="#stay">
+ <DetectChar attribute="Region Marker" context="#pop#pop#pop" char="}" endRegion="loop_block" />
+ <IncludeRules context="client_definition" />
+ </context>
+
+ <!-- loop keyword for server definitions -->
+ <context name="server_loop_instruction" attribute="Normal Text" lineEndContext="#stay">
+ <Int attribute="Decimal" context="server_loop_defined" />
+ </context>
+ <context name="server_loop_defined" attribute="Normal Text" lineEndContext="#stay">
+ <DetectChar attribute="Region Marker" context="server_loop_code" char="{" beginRegion="loop_block" />
+ </context>
+ <context name="server_loop_code" attribute="Normal Text" lineEndContext="#stay">
+ <DetectChar attribute="Region Marker" context="#pop#pop#pop" char="}" endRegion="loop_block" />
+ <IncludeRules context="server_definition" />
+ </context>
+
+ <!-- shell keyword, one-line version -->
+ <context name="shell_instruction" attribute="Normal Text" lineEndContext="#stay">
+ <DetectChar attribute="Region Marker" context="shell_code" char="{" beginRegion="shell_block" />
+ <IncludeRules context="quoted-strings" />
+ <IncludeRules context="comments" />
+ </context>
+ <context name="shell_code" attribute="Normal Text" lineEndContext="#stay">
+ <DetectChar attribute="Region Marker" context="#pop#pop" char="}" endRegion="shell_block" />
+ <!-- There does not seem to be a syntax highlighting dedicated to "standard shell" so let's use Bash instead -->
+ <IncludeRules context="##Bash" />
+ </context>
+
+ <!-- Define keywords from other tools: variables and operators from the VCL language, varnishstat metrics -->
+ <context name="vcl_variables" attribute="Normal Text" lineEndContext="#stay">
+ <RegExpr attribute="Variable" context="#stay" String="now" />
+ <RegExpr attribute="Storage" context="#stay" String="storage\.[a-zA-Z0-9]+(?:\.(?:free_space|used_space|happy))?" />
+ <RegExpr attribute="TCP Property" context="#stay" String="client\.(ip|identity)" />
+ <RegExpr attribute="TCP Property" context="#stay" String="server\.(ip|hostname|identity|port)" />
+ <RegExpr attribute="HTTP Property" context="#stay" String="req\.(request|url|proto|backend|restarts|esi_level|ttl|grace|keep|xid|esi|can_gzip|backend\.healthy|hash_ignore_busy|hash_always_miss)" />
+ <RegExpr attribute="HTTP Property" context="#stay" String="bereq\.(request|url|proto|connect_timeout|first_byte_timeout|between_bytes_timeout)" />
+ <RegExpr attribute="HTTP Property" context="#stay" String="obj\.(proto|status|response|hits|ttl|grace|keep|lastuse)" />
+ <RegExpr attribute="HTTP Property" context="#stay" String="beresp\.(proto|saintmode|status|response|do_esi|do_stream|do_gzip|do_gunzip|ttl|grace|keep|backend\.(name|ip|port)|storage|cacheable)" />
+ <RegExpr attribute="HTTP Property" context="#stay" String="resp\.(proto|status|response)" />
+ <RegExpr attribute="HTTP X- Header" context="#stay" String="(req|bereq|resp|beresp|obj)\.http\.X-[-_A-Za-z0-9]*" />
+ <RegExpr attribute="HTTP Header" context="#stay" String="(req|bereq|resp|beresp|obj)\.http\.[A-Za-z][-_A-Za-z0-9]*" />
+ </context>
+ <context name="vcl_operators" attribute="Operator" lineEndContext="#stay">
+ <DetectChar attribute="Logical Operator" context="#stay" char="!" />
+ <Detect2Chars attribute="Logical Operator" context="#stay" char="&amp;" char1="&amp;" />
+ <Detect2Chars attribute="Logical Operator" context="#stay" char="|" char1="|" />
+
+ <Detect2Chars attribute="Comparison Operator" context="#stay" char="=" char1="=" />
+ <Detect2Chars attribute="Comparison Operator" context="#stay" char="!" char1="=" />
+ <Detect2Chars attribute="Comparison Operator" context="#stay" char="&lt;" char1="=" />
+ <Detect2Chars attribute="Comparison Operator" context="#stay" char="&gt;" char1="=" />
+ <DetectChar attribute="Comparison Operator" context="#stay" char="&lt;" />
+ <DetectChar attribute="Comparison Operator" context="#stay" char="&gt;" />
+ <DetectChar attribute="Comparison Operator" context="#stay" char="~" />
+ <Detect2Chars attribute="Comparison Operator" context="#stay" char="!" char1="~" />
+
+ <DetectChar attribute="Arithmetic Operator" context="#stay" char="+" />
+ <DetectChar attribute="Arithmetic Operator" context="#stay" char="-" />
+ <DetectChar attribute="Arithmetic Operator" context="#stay" char="*" />
+ <DetectChar attribute="Arithmetic Operator" context="#stay" char="/" />
+
+ <Detect2Chars attribute="Arithmetic Operator" context="#stay" char="+" char1="=" />
+ <Detect2Chars attribute="Arithmetic Operator" context="#stay" char="-" char1="=" />
+ <Detect2Chars attribute="Arithmetic Operator" context="#stay" char="*" char1="=" />
+ <Detect2Chars attribute="Arithmetic Operator" context="#stay" char="/" char1="=" />
+
+ <Detect2Chars attribute="Arithmetic Operator" context="#stay" char="+" char1="+" />
+ <Detect2Chars attribute="Arithmetic Operator" context="#stay" char="-" char1="-" />
+
+ <Detect2Chars attribute="Arithmetic Operator" context="#stay" char="&gt;" char1="&gt;" />
+ <Detect2Chars attribute="Arithmetic Operator" context="#stay" char="&lt;" char1="&lt;" />
+
+ <DetectChar attribute="Operator" context="#stay" char="=" />
+ </context>
+ <context name="varnishstat_variables" attribute="Normal Text" lineEndContext="#stay">
+ <RegExpr attribute="VarnishStat metric" context="#stay" String="client_(?:conn|drop|req|drop_late)" />
+ <RegExpr attribute="VarnishStat metric" context="#stay" String="cache_(?:hit(pass)?|miss)" />
+ <RegExpr attribute="VarnishStat metric" context="#stay" String="backend_(?:conn|unhealthy|busy|fail|reuse|toolate|recycle|retry|req)" />
+ <RegExpr attribute="VarnishStat metric" context="#stay" String="fetch_(?:head|length|chunked|eof|bad|close|oldhttp|zero|failed|1xx|204|304)" />
+ <RegExpr attribute="VarnishStat metric" context="#stay" String="n_(?:sess_mem|sess|object|vampireobject|objectcore|objecthead|waitinglist|vbc|wrk|wrk_(?:create|failed|max|lqueue|queueddrop)|backend|expired|lru_nuked|lru_moved|obj(?:sendfile|write|overflow)|vcl|vcl_avail|vcl_discard|ban|ban_(?:gone|add|retire|obj_test|re_test|dups)|gzip|gunzip)" />
+ <RegExpr attribute="VarnishStat metric" context="#stay" String="(?:losthdr|backend_req|accept_fail|uptime|vmods)" />
+ <RegExpr attribute="VarnishStat metric" context="#stay" String="s_(?:sess|req|pipe|pass|fetch|hdrbytes|bodybytes)" />
+ <RegExpr attribute="VarnishStat metric" context="#stay" String="sess_(?:closed|pipeline|readahead|linger|herd)" />
+ <RegExpr attribute="VarnishStat metric" context="#stay" String="shm_(?:records|writes|flushes|cont|cycles)" />
+ <RegExpr attribute="VarnishStat metric" context="#stay" String="sms_(?:nreq|nobj|nbytes|balloc|bfree)" />
+ <RegExpr attribute="VarnishStat metric" context="#stay" String="hcb_(?:nolock|lock|insert)" />
+ <RegExpr attribute="VarnishStat metric" context="#stay" String="esi_(?:errors|warnings)" />
+ <RegExpr attribute="VarnishStat metric" context="#stay" String="dir_dns_(?:lookups|failed|hit|cache_full)" />
+ <RegExpr attribute="VarnishStat metric" context="#stay" String="LCK\.(?:sm[spaf]|hsl|hcb|hcl|vcl|stat|sessmem|wstat|herder|wq|objhdr|exp|lru|cli|ban|vbp|vbe|backend)\.(?:creat|destroy|locks|colls)" />
+ <RegExpr attribute="VarnishStat metric" context="#stay" String="SMA\.[a-zA-Z0-9_-]+\.(?:c_(?:req|fail|bytes|freed)|g_(?:alloc|bytes|space))" />
+ <RegExpr attribute="VarnishStat metric" context="#stay" String="VBE\..+\.(?:happy|vcls)" />
+ </context>
+ </contexts>
+ <itemDatas>
+ <itemData name="Normal Text" defStyleNum="dsNormal" />
+ <itemData name="Comment" defStyleNum="dsComment" />
+ <itemData name="Keyword" defStyleNum="dsKeyword" />
+ <itemData name="TxReq Keyword" defStyleNum="dsKeyword" color="#008000" bold="0" />
+ <itemData name="TxResp Keyword" defStyleNum="dsKeyword" color="#008000" bold="0" />
+ <itemData name="RxResp Keyword" defStyleNum="dsKeyword" color="#008000" bold="0" />
+ <itemData name="Action Keyword" defStyleNum="dsKeyword" />
+ <itemData name="Operator" defStyleNum="dsKeyword" color="#008000" bold="0" />
+ <itemData name="Comparison Operator" defStyleNum="dsKeyword" color="#008000" bold="0" />
+ <itemData name="Arithmetic Operator" defStyleNum="dsKeyword" color="#008000" bold="0" />
+ <itemData name="Logical Operator" defStyleNum="dsKeyword" color="#008000" bold="0" />
+ <itemData name="String" defStyleNum="dsString" bold="0" italic="0" />
+ <itemData name="Region Marker" defStyleNum="dsNormal" />
+ <itemData name="Storage" defStyleNum="dsDataType" color="#0000FF" selColor="#0000FF" bold="0" italic="0" />
+ <itemData name="TCP Property" defStyleNum="dsDataType" color="#0000FF" selColor="#0000FF" bold="0" italic="1" />
+ <itemData name="HTTP Property" defStyleNum="dsDataType" color="#0000FF" selColor="#0000FF" bold="0" italic="0" />
+ <itemData name="HTTP Header" defStyleNum="dsDataType" color="#0D62FF" selColor="#0D62FF" bold="0" italic="0" />
+ <itemData name="HTTP X- Header" defStyleNum="dsDataType" color="#0D62FF" selColor="#0D62FF" bold="0" italic="1" />
+ <itemData name="HTTP announce" defStyleNum="dsDataType" color="#562579" selColor="#562579" bold="1" />
+ <itemData name="HTTP method" defStyleNum="dsDataType" color="#562579" selColor="#562579" bold="1" />
+ <itemData name="HTTP WebDAV method" defStyleNum="dsDataType" color="#562579" selColor="#562579" bold="1" />
+ <itemData name="HTTP custom method" defStyleNum="dsDataType" color="#562579" selColor="#562579" bold="1" />
+ <itemData name="VarnishStat metric" defStyleNum="dsDataType" color="#0000FF" selColor="#0000FF" bold="0" italic="0" />
+ <itemData name="Decimal" defStyleNum="dsDecVal" />
+ <itemData name="Float" defStyleNum="dsFloat" spellChecking="false"/>
+ <itemData name="Client Identifier" defStyleNum="dsDataType" color="#0D62FF" selColor="#0D62FF" bold="0" underline="1" />
+ <itemData name="Server Identifier" defStyleNum="dsDataType" color="#0D62FF" selColor="#0D62FF" bold="0" underline="1" />
+ <itemData name="Varnish Identifier" defStyleNum="dsDataType" color="#0D62FF" selColor="#0D62FF" bold="0" underline="1" />
+ <itemData name="Sema Identifier" defStyleNum="dsDataType" color="#0D62FF" selColor="#0D62FF" bold="0" underline="1" />
+ </itemDatas>
+ </highlighting>
+ <general>
+ <comments>
+ <comment name="singleLine" start="#" />
+ </comments>
+ <keywords casesensitive="1" />
+ </general>
+</language>
+<!-- kate: space-indent on; indent-width 2; replace-tabs on; -->