123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE language SYSTEM "language.dtd"
- [
- <!ENTITY null "(?:null|Null|NULL|~)">
- <!ENTITY bool "(?:y|Y|yes|Yes|YES|n|N|no|No|NO|true|True|TRUE|false|False|FALSE|on|On|ON|off|Off|OFF)">
- <!ENTITY int "(?:0|[\-\+]?[1-9][0-9_]*)">
- <!ENTITY intOther "[\-\+]?0(?:x_*[0-9a-fA-F][0-9a-fA-F_]*|o?_*[0-7][0-7_]*|b_*[01][01_]*)"> <!-- Hex, Octal, Binary -->
- <!ENTITY intBase60 "[\-\+]?[1-9][0-9_]*(?:\:[0-5]?[0-9])+">
- <!ENTITY allInt "(?:&intBase60;|&intOther;|∫)">
- <!ENTITY float "[\-\+]?(?:[0-9][0-9_]*\.[0-9\._]*|\._*[0-9][0-9\._]*)(?:[eE][\-\+]?[0-9]+)?">
- <!ENTITY floatExp "[\-\+]?[0-9][0-9_]*[eE][\-\+]?[0-9]+">
- <!ENTITY floatBase60 "[\-\+]?[0-9][0-9_]*(?:\:[0-5]?[0-9])+\.[0-9_]*">
- <!ENTITY inf "[\-\+]?\.(?:inf|Inf|INF)\b">
- <!ENTITY nan "\.(?:nan|NaN|NAN)\b">
- <!ENTITY allFloat "(?:&float;|&floatExp;|&floatBase60;|&inf;|&nan;)">
- <!ENTITY endValue "(?:\s*$|\s+#)">
- <!ENTITY endValueInline "\s*[:,\[\]\{\}]">
- <!ENTITY space "[ ]">
- <!-- Key quoted -->
- <!ENTITY keyDQ ""(?:\\.|[^"])+"\s*">
- <!ENTITY keySQ "'(?:[^']|'')+'\s*">
- <!-- Literal/folded operator -->
- <!ENTITY literalOp "[\|>][\-\+]?">
- <!-- Key after "?" or "-", used to detect literal/folded operator -->
- <!ENTITY keyAfterOp "(?:[^"'#\-\?\s][^:#]*|\-(?:[^\s:#][^:#]*)?|&keyDQ;|&keySQ;)">
- <!ENTITY dataTypes "!!\S+">
- <!ENTITY alias "&\S+">
- <!ENTITY reference "\*\S+">
- <!ENTITY dpointsHashAttrPreInline1 "[^\s"'#\-,\}\s][^:#,\}]*(?=\:(?:\s|$))">
- <!ENTITY dpointsHashAttrPreInline2 "\-(?:[^\s:#,\}][^:#,\}]*)?(?=\:(?:\s|$))">
- <!ENTITY dpointsHashAttrPreInline3 "&keyDQ;(?=\:(?:\s|$))">
- <!ENTITY dpointsHashAttrPreInline4 "&keySQ;(?=\:(?:\s|$))">
- <!ENTITY dpointsListAttrPreInline1 "[^"'#\-,\]\s][^:#,\]]*(?=\:(?:\s|$))">
- <!ENTITY dpointsListAttrPreInline2 "\-(?:[^\s:#,\]][^:#,\]]*)?(?=\:(?:\s|$))">
- <!ENTITY dpointsListAttrPreInline3 "&keyDQ;(?=\:(?:\s|$))">
- <!ENTITY dpointsListAttrPreInline4 "&keySQ;(?=\:(?:\s|$))">
- <!ENTITY dpointsAttrPre1 "[^"'#\-\s][^:#]*(?=\:(?:\s|$))">
- <!ENTITY dpointsAttrPre2 "\-(?:[^\s:#][^:#]*)?(?=\:(?:\s|$))">
- <!ENTITY dpointsAttrPre3 "&keyDQ;(?=\:(?:\s|$))">
- <!ENTITY dpointsAttrPre4 "&keySQ;(?=\:(?:\s|$))">
- ]>
- <!-- Author: Dr Orlovsky MA <maxim@orlovsky.info> //-->
- <!-- Modifications (YAML 1.2), values & support for literal/folded style:
- Nibaldo González S. <nibgonz@gmail.com>
- These modifications are under the MIT license. //-->
- <language name="YAML" version="11" kateversion="5.0" section="Markup"
- extensions="*.yaml;*.yml" mimetype="text/yaml" priority="9"
- author="Dr Orlovsky MA (dr.orlovsky@gmail.com), Nibaldo González (nibgonz@gmail.com)" license="LGPL">
- <highlighting>
- <contexts>
- <context attribute="Attribute" lineEndContext="#stay" name="normal" >
- <StringDetect attribute="Document Header" context="header" String="---" column="0"/>
- <RegExpr attribute="End of Document" context="EOD" String="^\.\.\.$" column="0"/>
- <DetectChar attribute="Directive" context="directive" char="%" column="0"/>
- <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
- <!-- Literal/Folded Style -->
- <IncludeRules context="find-literal-block" />
- <RegExpr attribute="Operator" firstNonSpace="true" context="dash" String="\-(?=\s|$)" />
- <DetectChar attribute="Operator" firstNonSpace="true" context="mapping-key" char="?" />
- <DetectChar attribute="Operator" firstNonSpace="true" context="list" char="[" beginRegion="List" />
- <DetectChar attribute="Operator" firstNonSpace="true" context="hash" char="{" beginRegion="Hash" />
- <RegExpr attribute="Data Types" firstNonSpace="true" context="after-data" String="&dataTypes;" />
- <RegExpr attribute="Alias" firstNonSpace="true" context="after-data" String="&alias;" />
- <RegExpr attribute="Reference" firstNonSpace="true" context="after-data" String="&reference;" />
- <RegExpr attribute="Key" context="dpoints-attribute-pre" String="&dpointsAttrPre1;|&dpointsAttrPre2;|&dpointsAttrPre3;|&dpointsAttrPre4;"/>
- <RegExpr attribute="Key Points Operator" context="attribute-pre" String=":(?=\s|$)"/>
- <DetectChar attribute="String" firstNonSpace="true" context="string" char="'" beginRegion="String" />
- <DetectChar attribute="String" firstNonSpace="true" context="stringx" char=""" beginRegion="String" />
- <IncludeRules context="values-firstnonspace" />
- <DetectSpaces/>
- </context>
- <context attribute="Normal Text" lineEndContext="#pop" name="mapping-key" fallthrough="true" fallthroughContext="#pop">
- <RegExpr attribute="Comment" context="#pop!comment" String="(?:^|\s+)#" />
- <DetectSpaces />
- <RegExpr attribute="Operator" context="#pop!dash" String="\-(?=\s|$)" />
- <RegExpr attribute="Data Types" context="#pop!after-data" String="&dataTypes;" />
- <RegExpr attribute="Alias" context="#pop!after-data" String="&alias;" />
- <RegExpr attribute="Reference" context="#pop!after-data" String="&reference;" />
- <DetectChar attribute="Operator" context="#pop!list" char="[" beginRegion="List" />
- <DetectChar attribute="Operator" context="#pop!hash" char="{" beginRegion="Hash" />
- <DetectChar attribute="String" context="#pop!string" char="'" beginRegion="String" />
- <DetectChar attribute="String" context="#pop!stringx" char=""" beginRegion="String" />
- </context>
- <context attribute="Normal Text" lineEndContext="#pop" name="dash" fallthrough="true" fallthroughContext="#pop">
- <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
- <DetectSpaces/>
- <RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />
- <RegExpr attribute="Alias" context="#stay" String="&alias;" />
- <RegExpr attribute="Reference" context="#stay" String="&reference;" />
- <IncludeRules context="values" />
- <DetectChar attribute="Operator" context="#pop!mapping-key" char="?" />
- <RegExpr attribute="Operator" context="#stay" String="\-(?=\s|$)" />
- <DetectChar attribute="Operator" context="#pop!list" char="[" beginRegion="List" />
- <DetectChar attribute="Operator" context="#pop!hash" char="{" beginRegion="Hash" />
- <DetectChar attribute="String" context="#pop!string" char="'" beginRegion="String" />
- <DetectChar attribute="String" context="#pop!stringx" char=""" beginRegion="String" />
- </context>
- <!-- Highlight lists, hashes and strings after a data type, reference or alias -->
- <context attribute="Normal Text" lineEndContext="#pop" name="after-data" fallthrough="true" fallthroughContext="#pop">
- <RegExpr attribute="Comment" context="#pop!comment" String="(?:^|\s+)#" />
- <DetectSpaces />
- <RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />
- <RegExpr attribute="Alias" context="#stay" String="&alias;" />
- <RegExpr attribute="Reference" context="#stay" String="&reference;" />
- <DetectChar attribute="Operator" context="list" char="[" beginRegion="List" />
- <DetectChar attribute="Operator" context="hash" char="{" beginRegion="Hash" />
- <DetectChar attribute="String" context="string" char="'" beginRegion="String" />
- <DetectChar attribute="String" context="stringx" char=""" beginRegion="String" />
- </context>
- <context attribute="Document Header" lineEndContext="#pop" name="header">
- <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
- <RegExpr attribute="Literal/Folded Operator" context="header-literal-operator" String="\s&literalOp;(?=&endValue;)" lookAhead="true" />
- </context>
- <context attribute="Document Header" lineEndContext="#pop#pop" name="header-literal-operator" fallthrough="true" fallthroughContext="#pop">
- <DetectSpaces />
- <RegExpr attribute="Literal/Folded Operator" context="#pop#pop!literal-block-simple" String="&literalOp;" beginRegion="Literal" />
- </context>
- <context attribute="End of Document" lineEndContext="#stay" name="EOD">
- </context>
- <context attribute="Directive" lineEndContext="#pop" name="directive">
- </context>
- <context attribute="Attribute" lineEndContext="#pop#pop" name="attribute">
- <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
- </context>
- <context attribute="Attribute" lineEndContext="#stay" name="list-attribute-inline">
- <AnyChar attribute="Operator" context="#pop#pop" lookAhead="true" String=",]" />
- <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
- </context>
- <context attribute="Attribute" lineEndContext="#stay" name="hash-attribute-inline">
- <AnyChar attribute="Operator" context="#pop#pop" lookAhead="true" String=",}" />
- <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
- </context>
- <!-- Attribute -->
- <context attribute="Attribute" lineEndContext="#pop" name="dpoints-attribute-pre" fallthrough="true" fallthroughContext="#pop!attribute-pre">
- <DetectChar attribute="Key Points Operator" context="#pop!attribute-pre" char=":" /> <!-- Highlight two points after Key -->
- </context>
- <context attribute="Attribute" lineEndContext="#pop" name="attribute-pre" fallthrough="true" fallthroughContext="attribute">
- <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
- <DetectSpaces/>
- <DetectChar attribute="Operator" context="#stay" char="?" />
- <RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />
- <DetectChar attribute="Operator" context="list" char="[" beginRegion="List" />
- <DetectChar attribute="Operator" context="hash" char="{" beginRegion="Hash" />
- <DetectChar attribute="String" context="attribute-string" char="'" beginRegion="String" />
- <DetectChar attribute="String" context="attribute-stringx" char=""" beginRegion="String" />
- <RegExpr attribute="Alias" context="#stay" String="&alias;(?=\s+[\[\{])" />
- <RegExpr attribute="Reference" context="#stay" String="&reference;(?=\s+[\[\{])" />
- <RegExpr attribute="Alias" context="attribute" String="&alias;" />
- <RegExpr attribute="Reference" context="attribute" String="&reference;" />
- <IncludeRules context="values" />
- <RegExpr attribute="Literal/Folded Operator" context="#stay" String="&literalOp;(?=&endValue;)" />
- </context>
- <context attribute="Attribute" lineEndContext="#pop" name="default-attribute-pre-inline">
- <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
- <DetectSpaces/>
- <DetectChar attribute="Operator" context="#stay" char="?" />
- <RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />
- <DetectChar attribute="Operator" context="list" char="[" beginRegion="List" />
- <DetectChar attribute="Operator" context="hash" char="{" beginRegion="Hash" />
- <DetectChar attribute="String" context="attribute-string-inline" char="'" beginRegion="String" />
- <DetectChar attribute="String" context="attribute-stringx-inline" char=""" beginRegion="String" />
- <RegExpr attribute="Alias" context="#stay" String="&alias;(?=\s+[\[\{])" />
- <RegExpr attribute="Reference" context="#stay" String="&reference;(?=\s+[\[\{])" />
- </context>
- <!-- Attribute Inline, Within List -->
- <context attribute="Attribute" lineEndContext="#pop" name="dpoints-list-attribute-pre-inline" fallthrough="true" fallthroughContext="#pop!list-attribute-pre-inline">
- <DetectChar attribute="Key Points Operator" context="#pop!list-attribute-pre-inline" char=":" /> <!-- Highlight two points after Key -->
- </context>
- <context attribute="Attribute" lineEndContext="#pop" name="list-attribute-pre-inline" fallthrough="true" fallthroughContext="list-attribute-inline">
- <IncludeRules context="default-attribute-pre-inline" />
- <RegExpr attribute="Alias" context="list-attribute-inline" String="&alias;" />
- <RegExpr attribute="Reference" context="list-attribute-inline" String="&reference;" />
- <AnyChar attribute="Operator" context="#pop" lookAhead="true" String=",]" />
- <IncludeRules context="values-inline" />
- </context>
- <!-- Attribute Inline, Within Hash -->
- <context attribute="Attribute" lineEndContext="#pop" name="dpoints-hash-attribute-pre-inline" fallthrough="true" fallthroughContext="#pop!hash-attribute-pre-inline">
- <DetectChar attribute="Key Points Operator" context="#pop!hash-attribute-pre-inline" char=":" /> <!-- Highlight two points after Key -->
- </context>
- <context attribute="Attribute" lineEndContext="#pop" name="hash-attribute-pre-inline" fallthrough="true" fallthroughContext="hash-attribute-inline">
- <IncludeRules context="default-attribute-pre-inline" />
- <RegExpr attribute="Alias" context="hash-attribute-inline" String="&alias;" />
- <RegExpr attribute="Reference" context="hash-attribute-inline" String="&reference;" />
- <AnyChar attribute="Operator" context="#pop" lookAhead="true" String=",}" />
- <IncludeRules context="values-inline" />
- </context>
- <!-- List -->
- <!-- Context "find-values-list" highlights values and then sends to "list-element" -->
- <context attribute="List" lineEndContext="#stay" name="list" fallthrough="true" fallthroughContext="#pop!find-values-list" noIndentationBasedFolding="true">
- <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
- <DetectSpaces />
- <DetectChar attribute="Operator" context="#pop!find-values-list" char="?" />
- </context>
- <context attribute="List" lineEndContext="#stay" name="list-element" noIndentationBasedFolding="true">
- <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
- <DetectChar attribute="Operator" context="#pop" char="]" endRegion="List" />
- <DetectChar attribute="Operator" context="list" char="[" beginRegion="List" />
- <DetectChar attribute="Operator" context="hash" char="{" beginRegion="Hash" />
- <RegExpr attribute="Key" context="dpoints-list-attribute-pre-inline" String="&dpointsListAttrPreInline1;|&dpointsListAttrPreInline2;|&dpointsListAttrPreInline3;|&dpointsListAttrPreInline4;"/>
- <RegExpr attribute="Key Points Operator" context="list-attribute-pre-inline" String=":(?=\s|$)" firstNonSpace="true" />
- <RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />
- <RegExpr attribute="Alias" context="#stay" String="&alias;" />
- <RegExpr attribute="Reference" context="#stay" String="&reference;" />
- <DetectChar attribute="String" context="string" char="'" beginRegion="String" />
- <DetectChar attribute="String" context="stringx" char=""" beginRegion="String" />
- <DetectChar attribute="Operator" context="#pop!list" char="," />
- <IncludeRules context="values-list" />
- </context>
- <!-- Hash -->
- <context attribute="Hash" lineEndContext="#stay" name="hash" fallthrough="true" fallthroughContext="#pop!hash-element" noIndentationBasedFolding="true">
- <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
- <DetectSpaces />
- <DetectChar attribute="Operator" context="#pop!hash-element" char="?" />
- </context>
- <context attribute="Hash" lineEndContext="#stay" name="hash-element" noIndentationBasedFolding="true">
- <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
- <DetectSpaces/>
- <RegExpr attribute="Key" context="dpoints-hash-attribute-pre-inline" String="&dpointsHashAttrPreInline1;|&dpointsHashAttrPreInline2;|&dpointsHashAttrPreInline3;|&dpointsHashAttrPreInline4;"/>
- <RegExpr attribute="Key Points Operator" context="hash-attribute-pre-inline" String=":(?=\s|$)"/>
- <DetectChar attribute="Operator" context="#pop" char="}" endRegion="Hash" />
- <DetectChar attribute="Operator" context="#pop!hash" char="," />
- <!-- This improves highlighting in keys with multiple lines -->
- <RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />
- <RegExpr attribute="Alias" context="#stay" String="&alias;" />
- <RegExpr attribute="Reference" context="#stay" String="&reference;" />
- <DetectChar attribute="String" context="string" char="'" beginRegion="String" />
- <DetectChar attribute="String" context="stringx" char=""" beginRegion="String" />
- </context>
- <!-- Strings -->
- <context attribute="String" lineEndContext="#stay" name="attribute-string" noIndentationBasedFolding="true">
- <DetectIdentifier />
- <IncludeRules context="escaped-char-singleq" />
- <DetectChar attribute="String" context="attribute-end" char="'" endRegion="String" />
- </context>
- <context attribute="String" lineEndContext="#stay" name="attribute-stringx" noIndentationBasedFolding="true">
- <DetectIdentifier />
- <IncludeRules context="escaped-char-doubleq" />
- <DetectChar attribute="String" context="attribute-end" char=""" endRegion="String" />
- </context>
- <context attribute="String" lineEndContext="#stay" name="attribute-string-inline" noIndentationBasedFolding="true">
- <DetectIdentifier />
- <IncludeRules context="escaped-char-singleq" />
- <DetectChar attribute="String" context="attribute-end-inline" char="'" endRegion="String" />
- </context>
- <context attribute="String" lineEndContext="#stay" name="attribute-stringx-inline" noIndentationBasedFolding="true">
- <DetectIdentifier />
- <IncludeRules context="escaped-char-doubleq" />
- <DetectChar attribute="String" context="attribute-end-inline" char=""" endRegion="String" />
- </context>
- <context attribute="Error" lineEndContext="#pop#pop#pop" name="attribute-end">
- <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
- <DetectSpaces attribute="Normal Text" context="#stay"/>
- </context>
- <context attribute="Error" lineEndContext="#pop#pop#pop" name="attribute-end-inline">
- <RegExpr attribute="Comment" context="comment" String="(?:^|\s+)#" />
- <DetectSpaces attribute="Normal Text" context="#stay"/>
- <AnyChar context="#pop#pop#pop" lookAhead="true" String="}],"/>
- </context>
- <context attribute="String" lineEndContext="#stay" name="string" noIndentationBasedFolding="true">
- <DetectIdentifier />
- <IncludeRules context="escaped-char-singleq" />
- <DetectChar attribute="String" context="#pop" char="'" endRegion="String" />
- </context>
- <context attribute="String" lineEndContext="#stay" name="stringx" noIndentationBasedFolding="true">
- <DetectIdentifier />
- <IncludeRules context="escaped-char-doubleq" />
- <DetectChar attribute="String" context="#pop" char=""" endRegion="String" />
- </context>
- <context attribute="Normal Text" lineEndContext="#stay" name="escaped-char-doubleq">
- <RegExpr attribute="Escaped Character" context="#stay" String="\\(?:[\s0abtnvfre"/\\N_Lp]|x[a-fA-F0-9]{2}|u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8})"/>
- </context>
- <context attribute="Normal Text" lineEndContext="#stay" name="escaped-char-singleq">
- <Detect2Chars attribute="Escaped Character" context="#stay" char="'" char1="'" />
- </context>
- <context attribute="Comment" lineEndContext="#pop" name="comment">
- <DetectSpaces />
- <IncludeRules context="##Comments" />
- </context>
- <!-- Values -->
- <context attribute="Normal Text" lineEndContext="#stay" name="values">
- <RegExpr attribute="Null" context="#stay" String="&null;(?=&endValue;)"/>
- <RegExpr attribute="Boolean" context="#stay" String="&bool;(?=&endValue;)"/>
- <RegExpr attribute="Float" context="#stay" String="&allFloat;(?=&endValue;)"/>
- <RegExpr attribute="Integer" context="#stay" String="&allInt;(?=&endValue;)"/>
- </context>
- <context attribute="Normal Text" lineEndContext="#stay" name="values-firstnonspace">
- <RegExpr attribute="Null" firstNonSpace="true" context="#stay" String="&null;(?=&endValue;)"/>
- <RegExpr attribute="Boolean" firstNonSpace="true" context="#stay" String="&bool;(?=&endValue;)"/>
- <RegExpr attribute="Float" firstNonSpace="true" context="#stay" String="&allFloat;(?=&endValue;)"/>
- <RegExpr attribute="Integer" firstNonSpace="true" context="#stay" String="&allInt;(?=&endValue;)"/>
- </context>
- <context attribute="Normal Text" lineEndContext="#stay" name="values-inline">
- <RegExpr attribute="Null" context="#stay" String="&null;(?=&endValueInline;|&endValue;)"/>
- <RegExpr attribute="Boolean" context="#stay" String="&bool;(?=&endValueInline;|&endValue;)"/>
- <RegExpr attribute="Float" context="#stay" String="&allFloat;(?=&endValueInline;|&endValue;)"/>
- <RegExpr attribute="Integer" context="#stay" String="&allInt;(?=&endValueInline;|&endValue;)"/>
- </context>
- <context attribute="Normal Text" lineEndContext="#stay" name="values-list">
- <RegExpr attribute="Null" context="#stay" String="(?:\s|^)&null;(?=&endValueInline;|&endValue;)"/>
- <RegExpr attribute="Boolean" context="#stay" String="(?:\s|^)&bool;(?=&endValueInline;|&endValue;)"/>
- <RegExpr attribute="Float" context="#stay" String="(?:\s|^)&allFloat;(?=&endValueInline;|&endValue;)"/>
- <RegExpr attribute="Integer" context="#stay" String="(?:\s|^)&allInt;(?=&endValueInline;|&endValue;)"/>
- </context>
- <!-- If the value is found immediately at the beginning of the list item -->
- <context attribute="Normal Text" lineEndContext="#pop!list-element" name="find-values-list" fallthrough="true" fallthroughContext="#pop!list-element">
- <RegExpr attribute="Null" context="#pop!list-element" String="&null;(?=&endValueInline;|&endValue;)"/>
- <RegExpr attribute="Boolean" context="#pop!list-element" String="&bool;(?=&endValueInline;|&endValue;)"/>
- <RegExpr attribute="Float" context="#pop!list-element" String="&allFloat;(?=&endValueInline;|&endValue;)"/>
- <RegExpr attribute="Integer" context="#pop!list-element" String="&allInt;(?=&endValueInline;|&endValue;)"/>
- </context>
- <!-- Literal/Folded Style: http://yaml.org/spec/1.2/spec.html#id2795688 -->
- <context attribute="Normal Text" lineEndContext="#stay" name="find-literal-block">
- <!-- Do not allow indentation with tabs: -->
- <RegExpr attribute="Alert" context="#stay" column="0"
- String="^&space;*\t+\s*(?=(?:(?:&keyDQ;|&keySQ;|[^#])*[^#\w\|<>"'])?&literalOp;&endValue;)" />
- <!-- CASE 1: The literal/folded operator is the first character of a line.
- The text after a space is considered literal.
- Ex:
- > |
- > ^Start the literal text
- -->
- <RegExpr attribute="Literal/Folded Operator" context="literal-block-simple" column="0"
- String="^&literalOp;(?=&endValue;)" beginRegion="Literal" />
- <!-- CASE 2: Only the literal/folded operator is present in a line, after a space (the indentation
- is captured). The text with the same indentation of the operator will be highlighted as literal.
- Ex:
- > key:
- > |
- > ^Start the literal text
- However, in this case, the correct way is to use the indentation of the block, not the
- indentation of the the operator. The problem is that it is difficult to capture.
- > key1:
- > key2:
- > key3:
- > |
- > ^Block indentation (correct literal text)
- -->
- <RegExpr attribute="Literal/Folded Operator" context="literal-block-only-operator" column="0"
- String="^(&space;+)&literalOp;(?=&endValue;)" beginRegion="Literal" />
- <!-- CASE 3: There is a Key before the literal/folded operator (Key indentation is captured).
- The text with the Key's indentation plus a space is considered literal.
- Ex:
- > key: |
- > ^Start the literal text
- > key: !!type >-
- > ^Start the folded text
- -->
- <RegExpr attribute="Key Points Operator" context="literal-block-key" column="0"
- String="^(&space;*)\:(?=\s+(?:(?:&keyDQ;|&keySQ;|[^#])*[^#\w\|<>"'])?&literalOp;&endValue;)" />
- <RegExpr attribute="Key" context="literal-block-key" column="0"
- String="^(&space;*)(?:[^"'#\-\?\s][^:#]*|\-(?:[^\s:#][^:#]*)?|&keyDQ;|&keySQ;)(?=\:\s+(?:(?:&keyDQ;|&keySQ;|[^#])*[^#\w\|<>"'])?&literalOp;&endValue;)" />
- <!-- CASE 4: Is there an operator "?" or "-" at the beginning of the line.
- NOTE: Nested characters "-" and "?" are considered as part of the indentation.
- Therefore, the indentation of the Key or the last operator "?" or "-" is captured.
- Ex:
- > ? |
- > ^Start the literal Text
- > ? - - |
- > ^Start the literal text
- > - Key: |
- > ^Start the literal text
- > ? - - - - Key: |
- > ^Start the literal text
- -->
- <RegExpr context="start-literal-block-withdash" lookAhead="true" column="0"
- String="^&space;*(?:\?&space;*|\-&space;+){1,6}(?:(?:&keyDQ;|&keySQ;|[^#\-\?\s]|\-[^\s#])(?:(?:&keyDQ;|&keySQ;|[^#])*[^#\w\|<>"'])?)?&literalOp;&endValue;" />
- <!-- CASE 5: Literal/folded operator after a data type or other content.
- Ex:
- > !!type |
- > ^Start the literal text
- > key1:
- > key2:
- > !!type |
- > ^Start the literal text
- -->
- <RegExpr context="start-literal-block-other" lookAhead="true" column="0"
- String="^&space;*(?:(?:[&\*]|!!)\S+\s+)+&literalOp;&endValue;" />
- </context>
- <!-- If the line with the literal operator starts with the "-" or "?" operator.
- NOTE: The indentation capture is limited to 6 nested operators. -->
- <context attribute="Normal Text" lineEndContext="#pop" name="start-literal-block-withdash" noIndentationBasedFolding="true">
- <!-- With Key: Capture the Key indentation -->
- <RegExpr attribute="Operator" context="#pop!literal-block-key-withdash-s2" String="^(&space;*)[\?\-](&space;*)(?=&keyAfterOp;:\s)" column="0"/>
- <RegExpr attribute="Operator" context="#pop!literal-block-key-withdash-s3" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)(?=&keyAfterOp;:\s)" column="0"/>
- <RegExpr attribute="Operator" context="#pop!literal-block-key-withdash-s4" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)(?=&keyAfterOp;:\s)" column="0"/>
- <RegExpr attribute="Operator" context="#pop!literal-block-key-withdash-s5" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)(?=&keyAfterOp;:\s)" column="0"/>
- <RegExpr attribute="Operator" context="#pop!literal-block-key-withdash-s6" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)(?=&keyAfterOp;:\s)" column="0"/>
- <RegExpr attribute="Operator" context="#pop!literal-block-key-withdash-s7" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)(?=&keyAfterOp;:\s)" column="0"/>
- <!-- Without Key: Capture the indentation of the last operator "?" or "-" -->
- <RegExpr attribute="Operator" context="#pop!literal-block-withdash-s1" String="^(&space;*)[\?\-]\s*(?=[^#\-\?\s]|\-[^\s#])" column="0"/>
- <RegExpr attribute="Operator" context="#pop!literal-block-withdash-s2" String="^(&space;*)[\?\-](&space;*)[\?\-]\s*(?=[^#\-\?\s]|\-[^\s#])" column="0"/>
- <RegExpr attribute="Operator" context="#pop!literal-block-withdash-s3" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-]\s*(?=[^#\-\?\s]|\-[^\s#])" column="0"/>
- <RegExpr attribute="Operator" context="#pop!literal-block-withdash-s4" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-]\s*(?=[^#\-\?\s]|\-[^\s#])" column="0"/>
- <RegExpr attribute="Operator" context="#pop!literal-block-withdash-s5" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-]\s*(?=[^#\-\?\s]|\-[^\s#])" column="0"/>
- <RegExpr attribute="Operator" context="#pop!literal-block-withdash-s6" String="^(&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-](&space;*)[\?\-]\s*(?=[^#\-\?\s]|\-[^\s#])" column="0"/>
- </context>
- <!-- Capture the indentation of data type, reference or alias -->
- <context attribute="Normal Text" lineEndContext="#pop" name="start-literal-block-other" noIndentationBasedFolding="true">
- <!-- The text with the same indentation will be considered literal -->
- <RegExpr attribute="Data Types" context="#pop!literal-block-after-data" String="^(&space;+)&dataTypes;" column="0" />
- <RegExpr attribute="Alias" context="#pop!literal-block-after-data" String="^(&space;+)&alias;" column="0" />
- <RegExpr attribute="Reference" context="#pop!literal-block-after-data" String="^(&space;+)&reference;" column="0" />
- <!-- The text after a space will be considered literal (empty text is captured) -->
- <RegExpr attribute="Data Types" context="#pop!literal-block-withdash-s1" String="^()&dataTypes;" column="0" />
- <RegExpr attribute="Alias" context="#pop!literal-block-withdash-s1" String="^()&alias;" column="0" />
- <RegExpr attribute="Reference" context="#pop!literal-block-withdash-s1" String="^()&reference;" column="0" />
- </context>
- <!-- Highlight data/attribute before the literal operator (Note that if there is a line
- break within a string or bracket, the literal line will not be highlighted). -->
- <context attribute="Attribute" lineEndContext="#pop#pop" name="before-literal-operator" noIndentationBasedFolding="true">
- <RegExpr attribute="Literal/Folded Operator" context="#pop!end-literal-operator" String="&literalOp;(?=&endValue;)" beginRegion="Literal" />
- <RegExpr attribute="Error" context="#pop#pop" String="(?:[&\*]|!!)\S*&literalOp;(?=&endValue;)" />
- <RegExpr attribute="Data Types" context="#stay" String="&dataTypes;" />
- <RegExpr attribute="Alias" context="#stay" String="&alias;" />
- <RegExpr attribute="Reference" context="#stay" String="&reference;" />
- <DetectChar attribute="Operator" context="list" char="[" beginRegion="List" />
- <DetectChar attribute="Operator" context="hash" char="{" beginRegion="Hash" />
- <DetectChar attribute="String" context="string" char="'" beginRegion="String" />
- <DetectChar attribute="String" context="stringx" char=""" beginRegion="String" />
- </context>
- <context attribute="Normal Text" lineEndContext="#pop#pop" name="dpoints-key-before-literal-operator" fallthrough="true" fallthroughContext="#pop#pop" noIndentationBasedFolding="true">
- <DetectChar attribute="Key Points Operator" context="#pop!key-before-literal-operator" char=":" />
- </context>
- <context attribute="Attribute" lineEndContext="#pop#pop" name="key-before-literal-operator" noIndentationBasedFolding="true">
- <IncludeRules context="before-literal-operator" />
- <DetectChar attribute="Operator" context="#stay" char="?" />
- </context>
- <context attribute="Attribute" lineEndContext="#pop" name="end-literal-operator" noIndentationBasedFolding="true">
- <RegExpr attribute="Comment" context="#pop!comment" String="(?:^|\s+)#" />
- </context>
- <!-- Common rules for the content of the literal blocks -->
- <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-default" noIndentationBasedFolding="true">
- <!-- End literal/folded block -->
- <RegExpr attribute="Normal Text" context="#pop" String="^\s*\S" lookAhead="true" column="0" endRegion="Literal" />
- <!-- Find literal/folded operator -->
- <RegExpr context="before-literal-operator" String="\S" lookAhead="true" />
- </context>
- <context attribute="Normal Text" lineEndContext="#pop" name="literal-block-key-default" noIndentationBasedFolding="true">
- <!-- End literal/folded block -->
- <RegExpr attribute="Normal Text" context="#pop" String="^\s*\S" lookAhead="true" column="0" endRegion="Literal" />
- <!-- Detect Key before the literal/folded operator -->
- <RegExpr attribute="Key" context="dpoints-key-before-literal-operator" String="&keyAfterOp;(?=:\s)" />
- <RegExpr attribute="Normal Text" context="#pop" String="\S" lookAhead="true" endRegion="Literal" />
- </context>
- <!-- Content of the literal block: -->
- <!-- If the literal operator is starting the line (after a space, use block indentation) -->
- <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-only-operator" dynamic="true" noIndentationBasedFolding="true">
- <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1.*$" dynamic="true" column="0" />
- <RegExpr attribute="Normal Text" context="#pop" String="^\s*\S" lookAhead="true" column="0" endRegion="Literal" />
- <RegExpr attribute="Comment" context="comment" String="(?:^|\s)#" />
- <RegExpr context="#pop" String="\S" lookAhead="true" endRegion="Literal" />
- </context>
- <!-- If the literal operator is the first character of a line (or after header) -->
- <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-simple" noIndentationBasedFolding="true">
- <RegExpr attribute="Literal/Folded Block" context="#stay" String="^\s.*$" column="0" />
- <RegExpr attribute="Normal Text" context="#pop" String="^\s*\S" lookAhead="true" column="0" endRegion="Literal" />
- <RegExpr attribute="Comment" context="comment" String="(?:^|\s)#" />
- </context>
- <!-- If there is a data type or other content before the liretal operator (use block indentation) -->
- <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-after-data" dynamic="true" noIndentationBasedFolding="true">
- <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1.*$" dynamic="true" column="0" />
- <RegExpr attribute="Normal Text" context="#pop" String="^\s*\S" lookAhead="true" column="0" endRegion="Literal" />
- <RegExpr context="before-literal-operator" String="\S" lookAhead="true" />
- </context>
- <!-- If there is a key before the literal operator -->
- <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key" dynamic="true" noIndentationBasedFolding="true">
- <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1\s.*$" dynamic="true" column="0" />
- <RegExpr attribute="Normal Text" context="#pop" String="^\s*\S" lookAhead="true" column="0" endRegion="Literal" />
- <!-- Attribute of the Key (the Key was previously highlighted) -->
- <RegExpr attribute="Key Points Operator" context="key-before-literal-operator" String=":\s" />
- <RegExpr context="key-before-literal-operator" String="\S" lookAhead="true" />
- </context>
- <!-- If there are dashes/"?" before the literal operator -->
- <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s1" dynamic="true" noIndentationBasedFolding="true">
- <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1\s.*$" dynamic="true" column="0" />
- <IncludeRules context="literal-block-default" />
- </context>
- <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s2" dynamic="true" noIndentationBasedFolding="true">
- <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2&space;\s.*$" dynamic="true" column="0" />
- <IncludeRules context="literal-block-default" />
- </context>
- <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s3" dynamic="true" noIndentationBasedFolding="true">
- <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3&space;{2}\s.*$" dynamic="true" column="0" />
- <IncludeRules context="literal-block-default" />
- </context>
- <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s4" dynamic="true" noIndentationBasedFolding="true">
- <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3%4&space;{3}\s.*$" dynamic="true" column="0" />
- <IncludeRules context="literal-block-default" />
- </context>
- <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s5" dynamic="true" noIndentationBasedFolding="true">
- <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3%4%5&space;{4}\s.*$" dynamic="true" column="0" />
- <IncludeRules context="literal-block-default" />
- </context>
- <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-withdash-s6" dynamic="true" noIndentationBasedFolding="true">
- <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3%4%5%6&space;{5}\s.*$" dynamic="true" column="0" />
- <IncludeRules context="literal-block-default" />
- </context>
- <!-- If there are dashes/"?" and a Key before the literal operator -->
- <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s2" dynamic="true" noIndentationBasedFolding="true">
- <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2&space;\s.*$" dynamic="true" column="0" />
- <IncludeRules context="literal-block-key-default" />
- </context>
- <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s3" dynamic="true" noIndentationBasedFolding="true">
- <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3&space;{2}\s.*$" dynamic="true" column="0" />
- <IncludeRules context="literal-block-key-default" />
- </context>
- <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s4" dynamic="true" noIndentationBasedFolding="true">
- <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3%4&space;{3}\s.*$" dynamic="true" column="0" />
- <IncludeRules context="literal-block-key-default" />
- </context>
- <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s5" dynamic="true" noIndentationBasedFolding="true">
- <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3%4%5&space;{4}\s.*$" dynamic="true" column="0" />
- <IncludeRules context="literal-block-key-default" />
- </context>
- <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s6" dynamic="true" noIndentationBasedFolding="true">
- <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3%4%5%6&space;{5}\s.*$" dynamic="true" column="0" />
- <IncludeRules context="literal-block-key-default" />
- </context>
- <context attribute="Normal Text" lineEndContext="#stay" name="literal-block-key-withdash-s7" dynamic="true" noIndentationBasedFolding="true">
- <RegExpr attribute="Literal/Folded Block" context="#stay" String="^%1%2%3%4%5%6%7&space;{6}\s.*$" dynamic="true" column="0" />
- <IncludeRules context="literal-block-key-default" />
- </context>
- </contexts>
- <itemDatas>
- <itemData name="Normal Text" defStyleNum="dsAttribute" />
- <itemData name="Attribute" defStyleNum="dsAttribute" />
- <itemData name="List" defStyleNum="dsAttribute" />
- <itemData name="Hash" defStyleNum="dsAttribute" />
- <itemData name="Comment" defStyleNum="dsComment" />
- <itemData name="End of Document" defStyleNum="dsComment" />
- <itemData name="Document Header" defStyleNum="dsPreprocessor" />
- <itemData name="Data Types" defStyleNum="dsOthers" />
- <itemData name="Alias" defStyleNum="dsOthers" />
- <itemData name="Reference" defStyleNum="dsOthers" />
- <itemData name="Key" defStyleNum="dsFunction" bold="1" />
- <itemData name="Directive" defStyleNum="dsPreprocessor" />
- <itemData name="Key Points Operator" defStyleNum="dsKeyword" />
- <itemData name="Operator" defStyleNum="dsKeyword" />
- <itemData name="String" defStyleNum="dsString" />
- <itemData name="Escaped Character" defStyleNum="dsSpecialChar" />
- <itemData name="Literal/Folded Operator" defStyleNum="dsChar" bold="1" />
- <itemData name="Literal/Folded Block" defStyleNum="dsNormal" />
- <itemData name="Null" defStyleNum="dsChar" />
- <itemData name="Boolean" defStyleNum="dsChar" />
- <itemData name="Integer" defStyleNum="dsDecVal" />
- <itemData name="Float" defStyleNum="dsFloat" />
- <itemData name="Error" defStyleNum="dsError" />
- <itemData name="Alert" defStyleNum="dsAlert" backgroundColor="#EF9A9A" />
- </itemDatas>
- </highlighting>
- <general>
- <folding indentationsensitive="1" />
- <emptyLines>
- <emptyLine regexpr="(?:\s+|\s*#.*)"/>
- </emptyLines>
- <comments>
- <comment name="singleLine" start="#" position="afterwhitespace" />
- </comments>
- <keywords casesensitive="1"/>
- </general>
- </language>
- <!-- kate: replace-tabs on; tab-width 2; indent-width 2; -->
|