Warning, /frameworks/syntax-highlighting/data/syntax/javascript-react.xml is written in an unsupported language. File is not indexed.

0001 <?xml version="1.0" encoding="UTF-8"?>
0002 <!DOCTYPE language
0003 [
0004         <!ENTITY simpleName "(?:[a-z][a-z\d]*:)?[a-z][a-z\d]*">
0005         <!ENTITY baseName   "[a-zA-Z_\$[:^ascii:]](?:[\w\$\-\.[:^ascii:]]*[\w\$[:^ascii:]])?">
0006         <!ENTITY name       "(?:&baseName;:)?&baseName;">
0007         <!ENTITY baseNameWithBound "(?:\b[a-zA-Z_\$]|[^[:ascii:]])(?:[\w\$\-\.[:^ascii:]]*[\w\$[:^ascii:]])?">
0008         <!ENTITY nameWithBound     "(?:&baseNameWithBound;:)?&baseNameWithBound;"> <!-- Use this instead of "\b&name;" -->
0009 
0010         <!ENTITY simpleTag  "&lt;\s*&simpleName;"> <!-- Element tag -->
0011         <!ENTITY tag        "&lt;\s*(?:&name;|&gt;)">
0012         <!ENTITY entref     "&amp;(?:[a-zA-Z\d]+|#\d+|#x[a-fA-F\d]+);">
0013         <!ENTITY mlComment  "/\*(?:[^\*]|\*+[^/\*])*\*+/">
0014         <!ENTITY endTagName "[\s&lt;&gt;]|/[&gt;/\*]|$"> <!-- Delimiter of end of Tag name -->
0015 
0016         <!ENTITY identifier "[a-zA-Z_$[:^ascii:]][\w$[:^ascii:]]*">
0017 ]>
0018 
0019 <!--
0020     ====================================================================
0021 
0022       This file is part of the KDE's KSyntaxHighlighting framework.
0023 
0024       Copyright 2018-2020 Nibaldo González S. (nibgonz@gmail.com)
0025 
0026       This Source Code Form is subject to the terms of the MIT License.
0027       If a copy of the license was not distributed with this file,
0028       You can obtain one at: https://opensource.org/licenses/MIT
0029 
0030     ====================================================================
0031 
0032     This file is an extension of the JavaScript highlighter
0033     (javascript.xml, Version 14 and higher).
0034     IMPORTANT: Keep sync with "typescript-react.xml".
0035 
0036     Based on the XML syntax highlighting (v7), by Wilbert Berendsen
0037     (wilbert@kde.nl), and the TypeScript React grammar files,
0038     available at: https://github.com/Microsoft/TypeScript-TmLanguage
0039 
0040     Change log:
0041      * v9 [2020-06-03]: Add folding in templates.
0042      * v8 [2019-11-21]: Tag detection is more stricter.
0043      * v7 [2019-11-19]: Rename definition "JavaScript React" to "JavaScript React (JSX)".
0044      * v5 [2019-02-20]: Don't highlight tags within declarations of
0045                         types, variables, classes and interfaces.
0046                         Fixes tags after substitutions in templates.
0047                         Reorder part of the code.
0048      * v4 [2018-12-30]: Allow type assertion in the tag name.
0049                         Allow tags after the keywords "await" & "yield".
0050                         Allow empty tags and non-ASCII tag name & attributes.
0051      * v3 [2018-11-18]: Fix Doxygen comments & shebang. Remove TSX extension.
0052      * v2 [2018-08-18]: Remove "Conditional Expression" context.
0053      * v1 [2018-06-20]: Initial version
0054 -->
0055 
0056 <language name="JavaScript React (JSX)" version="10" kateversion="5.53" section="Scripts" indenter="cstyle"
0057           priority="9" extensions="*.jsx" mimetype="text/jsx;text/x-jsx;application/jsx;application/x-jsx;"
0058           author="Nibaldo González (nibgonz@gmail.com)" license="MIT">
0059 
0060 <highlighting>
0061 
0062         <contexts>
0063 
0064                 <context name="Shebang" attribute="Normal Text" lineEndContext="#pop!Normal" lineEmptyContext="#pop!Normal" fallthrough="true" fallthroughContext="#pop!Normal">
0065                         <Detect2Chars context="ShebangLine" attribute="Comment" char="#" char1="!" column="0" />
0066                 </context>
0067                 <context name="ShebangLine" attribute="Comment" lineEndContext="#pop#pop!Normal" />
0068 
0069                 <context name="Normal" attribute="Normal Text" lineEndContext="#stay">
0070                         <IncludeRules context="React" />
0071                         <IncludeRules context="Normal##JavaScript" />
0072                 </context>
0073 
0074                 <!-- JavaScript -->
0075 
0076                 <!-- Overwrite rules of 'javascript.xml'. These rules send to contexts
0077                      that contain: <IncludeRules context="Normal"/> in the JavaScript XML file. -->
0078                 <context name="OverwriteJavaScript" attribute="Normal Text" lineEndContext="#stay">
0079                         <DetectChar context="Template" attribute="Template" char="`" beginRegion="Template" />
0080                         <DetectChar attribute="Normal Text" context="#stay" char="[" beginRegion="List" />
0081                         <DetectChar attribute="Normal Text" context="NoRegExp##JavaScript" char="]" endRegion="List" />
0082                         <!-- NOTE: The "{" character sends to the "Object" context (see the "React" context) -->
0083                 </context>
0084                 <context name="Object" attribute="Normal Text" lineEndContext="#stay">
0085                         <DetectChar context="#pop" attribute="Normal Text" char="}" endRegion="Brace" />
0086                         <IncludeRules context="React" />
0087                         <RegExpr context="ConditionalExpression" attribute="Symbol" String="\?(?=[^\{\}]*&identifier;\s*\:)" />
0088                         <IncludeRules context="Object##JavaScript" />
0089                 </context>
0090                 <context name="ConditionalExpression" attribute="Normal Text" lineEndContext="#pop">
0091                         <DetectChar context="#pop" attribute="Symbol" char=":" />
0092                         <IncludeRules context="React" />
0093                         <IncludeRules context="ConditionalExpression##JavaScript" />
0094                 </context>
0095                 <context name="Template" attribute="Template" lineEndContext="#stay">
0096                         <DetectChar context="RegExpAfterString##JavaScript" attribute="Template" char="`" endRegion="Template" />
0097                         <!-- Find tags and send to the "Substitution" context -->
0098                         <Detect2Chars context="Substitution-BeforeTag" attribute="Substitution" char="$" char1="{" />
0099                         <IncludeRules context="Template##JavaScript" />
0100                 </context>
0101                 <context name="Substitution" attribute="Normal Text" lineEndContext="#stay">
0102                         <DetectChar context="#pop" attribute="Substitution" char="}" />
0103                         <IncludeRules context="React" />
0104                         <IncludeRules context="Substitution##JavaScript" />
0105                 </context>
0106 
0107                 <!-- Do not highlight tags in some special contexts -->
0108                 <context name="FindDeclarationsWithNoTags" attribute="Normal Text" lineEndContext="#stay">
0109                         <WordDetect context="InterfaceDeclaration" attribute="Reserved" String="interface" />
0110                         <WordDetect context="ClassDeclaration" attribute="Reserved" String="class" />
0111                         <WordDetect context="VarDeclaration" attribute="Reserved" String="let" />
0112                         <WordDetect context="VarDeclaration" attribute="Keyword" String="var" />
0113                         <WordDetect context="VarDeclaration" attribute="Keyword" String="const" />
0114                 </context>
0115                 <!-- Do not highlight tags after ":" in variable declarations -->
0116                 <context name="VarDeclaration" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
0117                         <DetectSpaces />
0118                         <DetectChar context="#pop!NoTag" attribute="Symbol" char=":" />
0119                         <RegExpr context="#stay" attribute="Normal Text" String="&identifier;(?=\s*(?:[\?!]\s*)?:)" />
0120                         <AnyChar context="#stay" attribute="Symbol" String="?!" />
0121                         <IncludeRules context="AllComments" />
0122                 </context>
0123                 <context name="NoTag" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
0124                         <DetectSpaces />
0125                         <IncludeRules context="AllComments" />
0126                         <DetectChar context="#pop" attribute="Symbol" char="&lt;" />
0127                         <RegExpr context="#stay" attribute="Normal Text" String="\(\s*(?=&lt;)" />
0128                         <RegExpr context="#stay" attribute="Normal Text" String="\[\s*(?=&lt;)" beginRegion="List" />
0129                         <RegExpr context="#pop!Object" attribute="Normal Text" String="\{\s*&lt;(\s*/(?![\*/]))?" beginRegion="Brace" />
0130                 </context>
0131                 <!-- Do not highlight tags in interface declarations -->
0132                 <context name="InterfaceDeclaration" attribute="Normal Text" lineEndContext="#stay">
0133                         <DetectChar context="#pop!InterfaceContentDeclaration" attribute="Normal Text" char="{" beginRegion="Brace" />
0134                         <DetectChar context="#pop" char="}" lookAhead="true" />
0135                         <IncludeRules context="Normal##JavaScript" />
0136                 </context>
0137                 <context name="InterfaceContentDeclaration" attribute="Normal Text" lineEndContext="#stay">
0138                         <DetectChar context="#pop" attribute="Normal Text" char="}" endRegion="Brace" />
0139                         <IncludeRules context="Object##JavaScript" />
0140                 </context>
0141                 <!-- Do not highlight tags in class declarations -->
0142                 <context name="ClassDeclaration" attribute="Normal Text" lineEndContext="#stay">
0143                         <DetectChar context="#pop!ClassDeclarationContent" attribute="Normal Text" char="{" beginRegion="Brace" />
0144                         <DetectChar context="#pop" char="}" lookAhead="true" />
0145                         <IncludeRules context="Normal##JavaScript" />
0146                 </context>
0147                 <context name="ClassDeclarationContent" attribute="Normal Text" lineEndContext="#stay">
0148                         <DetectChar context="#pop" attribute="Normal Text" char="}" endRegion="Brace" />
0149                         <DetectChar context="NoTag" attribute="Symbol" char=":" />
0150                         <IncludeRules context="Object" />
0151                 </context>
0152 
0153                 <!-- ReactJS -->
0154 
0155                 <!-- Tags highlighting -->
0156                 <context name="React" attribute="Normal Text" lineEndContext="#stay">
0157                         <!-- Tag in new line -->
0158                         <RegExpr context="ValidTag" attribute="Normal Text" String="&tag;" firstNonSpace="true" lookAhead="true" />
0159                         <!-- Highlight tags only after some keywords -->
0160                         <RegExpr context="ValidTag" attribute="ControlFlow" String="\b(?:return|await)\s*(?=&tag;|/\*)" />
0161                         <RegExpr context="ValidTag" attribute="Module" String="\b(?:default)\s*(?=&tag;|/\*)" />
0162                         <RegExpr context="ValidTag" attribute="Reserved" String="\b(?:yield)\s*(?=&tag;|/\*)" />
0163 
0164                         <!-- Characters before a valid tag -->
0165                         <RegExpr context="ValidTag" attribute="Special Operators" String="\=&gt;\s*(?=&tag;|/\*)" />
0166                         <RegExpr context="ValidTag" attribute="Symbol" String="(?:[,\=&gt;:\*\?]|&amp;&amp;|\|\|)\s*(?=&tag;|/\*)" />
0167                         <RegExpr context="ValidTag" attribute="Normal Text" String="\[\s*(?=&tag;|/\*)" beginRegion="List" />
0168                         <RegExpr context="ValidTag" attribute="Normal Text" String="\(\s*(?=&tag;|/\*)" />
0169                         <!-- The "Object-BeforeTag" context looks for a valid Tag and then sends the "Object" context -->
0170                         <DetectChar context="Object-BeforeTag" attribute="Normal Text" char="{" beginRegion="Brace" />
0171 
0172                         <RegExpr context="ValidTag" attribute="Symbol" String="&lt;\s*&gt;\s*(?=&tag;|/\*)" />
0173 
0174                         <!-- Tag after a comment on a new line -->
0175                         <Detect2Chars context="ValidTag" attribute="Comment" char="/" char1="*" firstNonSpace="true" lookAhead="true" />
0176 
0177                         <!-- Overwrite JavaScript rules to highlight tags within some contexts -->
0178                         <IncludeRules context="FindDeclarationsWithNoTags" />
0179                         <IncludeRules context="OverwriteJavaScript" />
0180                 </context>
0181 
0182                 <!-- Detect tags before starting a context -->
0183                 <context name="Object-BeforeTag" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!Object">
0184                         <IncludeRules context="ValidTag" />
0185                 </context>
0186                 <context name="Substitution-BeforeTag" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!Substitution">
0187                         <IncludeRules context="ValidTag" />
0188                 </context>
0189                 <context name="EvaluatedCode-BeforeTag" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop!EvaluatedCode">
0190                         <IncludeRules context="ValidTag" />
0191                 </context>
0192 
0193                 <!-- TAGS:
0194                      NOTE & TODO: The following code is common for 'javascript-react.xml' and 'typescript-react.xml'
0195                      and is replicated in both files. Look for some way to avoid having repeated code, for example,
0196                      with a common XML file or with a generator script. The only drawback is that the
0197                      "EvaluatedCode" context includes "Normal". -->
0198 
0199                 <!-- Highlight nested tags with comments in between.
0200                      NOTE: The highlighting of Tags after a multiline comment does not work with: lineEndContext="#pop" -->
0201                 <context name="ValidTag" attribute="Normal Text" lineEndContext="#stay" fallthrough="true" fallthroughContext="#pop">
0202                         <RegExpr context="#stay" attribute="Normal Text" String="\s+(?=&lt;|/\*)" />
0203                         <IncludeRules context="FindTags" />
0204                         <IncludeRules context="AllComments" />
0205                 </context>
0206 
0207                 <!-- Start tag.
0208                      There are two contexts to find Tags:
0209                      * FindTags: For Tags within TypeScript code; invalid name tags aren't highlighted.
0210                      * FindTagsInTagContent: For Tag within another tag; highlight any Tag.
0211                                              Tags with invalid names are highlighted as "Error".
0212                 -->
0213                 <context name="FindTags" attribute="Normal Text" lineEndContext="#stay">
0214                                 <!-- Invalid Tag, do not highlight tags in these cases:
0215                                      * "?" or "," after tag name:
0216                                          <Tag ? ...
0217                                          <Tag< ? ...
0218                                          <Tag /* comment */ ? ...
0219                                      * Invalid delimiter after comment (without spaces):
0220                                          <Tag/* comment */#
0221                                 -->
0222                         <RegExpr context="#pop" attribute="Symbol" String="&lt;(?=\s*&name;(?:(&lt;(?:\s*&mlComment;)*)?(?:\s*&mlComment;)*\s*[\?,]|(?:&mlComment;)+(?!&endTagName;|&baseName;|\{)))" />
0223 
0224                         <!-- Empty tag (element) -->
0225                         <RegExpr context="ElementTagContent" attribute="Element Tag" String="&lt;\s*&gt;" beginRegion="Element" />
0226                         <!-- Detect Tags -->
0227                         <RegExpr context="ElementTagFindType" attribute="Element Tag" String="&simpleTag;(?=&endTagName;)" beginRegion="Element" />
0228                         <RegExpr context="ComponentTagFindType" attribute="Component Tag" String="&tag;(?=&endTagName;)" beginRegion="ComponentElement" />
0229                         <!-- If a valid Tag was not detected -->
0230                         <DetectChar context="#pop" attribute="Symbol" char="&lt;" />
0231                 </context>
0232 
0233                 <context name="FindTagsInTagContent" attribute="Normal Text" lineEndContext="#stay">
0234                         <!-- Empty tag (element) -->
0235                         <RegExpr context="ElementTagContent" attribute="Element Tag" String="&lt;\s*&gt;" beginRegion="Element" />
0236                         <!-- Detect non-ASCII character in the tag name (component). This prevents highlighting as Element,
0237                              tag names that don't start with a non-ASCII character. -->
0238                         <RegExpr context="ComponentTagNonASCII" attribute="Component Tag" String="&lt;\s*(?=(?:[a-z][a-z\d]*:)?(?:[a-z][a-z\d]*)?[^[:ascii:]])" beginRegion="ComponentElement" /> <!-- &simpleName; -->
0239                         <!-- Element & component tags -->
0240                         <RegExpr context="ElementTagFindType" attribute="Element Tag" String="&simpleTag;(?=[^\w\$\-\.:]|$|[\-\.]+(?:[^\w\$\-\.]|$)|:(?:[^a-zA-Z_\$]|$))" beginRegion="Element" />
0241                         <RegExpr context="ComponentTagFindType" attribute="Component Tag" String="&tag;" beginRegion="ComponentElement" />
0242                 </context>
0243                 <!-- Highlight tag name with non-ASCII characters -->
0244                 <context name="ComponentTagNonASCII" attribute="Normal Text" lineEndContext="#pop!ComponentTag" fallthrough="true" fallthroughContext="#pop!ComponentTag">
0245                         <RegExpr context="#pop!ComponentTagFindType" attribute="Component Tag" String="&name;" />
0246                 </context>
0247 
0248                 <context name="FindEntityRefs" attribute="Normal Text" lineEndContext="#stay">
0249                         <RegExpr context="#stay" attribute="EntityRef" String="&entref;" />
0250                 </context>
0251 
0252                 <!-- Type after the tag name. Ex: <C<number> /> -->
0253                 <context name="ComponentTagFindType" attribute="Normal Text" lineEndContext="#pop!ComponentTag" fallthrough="true" fallthroughContext="#pop!ComponentTag">
0254                         <DetectChar context="#pop!TypeInsideTag" attribute="Symbol" char="&lt;" />
0255                 </context>
0256                 <context name="ElementTagFindType" attribute="Normal Text" lineEndContext="#pop!ElementTag" fallthrough="true" fallthroughContext="#pop!ElementTag">
0257                         <DetectChar context="#pop!TypeInsideTag" attribute="Symbol" char="&lt;" />
0258                 </context>
0259 
0260                 <!-- Type assertion after the tag name -->
0261                 <context name="TypeInsideTag" attribute="Component Tag" lineEndContext="#stay">
0262                         <DetectChar context="#pop!ComponentTag" attribute="Symbol" char="&gt;" />
0263                         <IncludeRules context="DefaultTypeInsideTag" />
0264                 </context>
0265                 <context name="DefaultTypeInsideTag" attribute="Component Tag" lineEndContext="#stay">
0266                         <DetectChar context="TypeInsideTag-AngleBracket" attribute="Symbol" char="&lt;" />
0267                         <DetectChar context="TypeInsideTag-CurlyBracket" attribute="Symbol" char="{" />
0268                         <DetectChar context="TypeInsideTag-SquareBracket" attribute="Symbol" char="[" />
0269                         <DetectChar context="TypeInsideTag-RoundBracket" attribute="Symbol" char="(" />
0270                         <IncludeRules context="AllComments" />
0271                 </context>
0272                 <context name="TypeInsideTag-AngleBracket" attribute="Component Tag" lineEndContext="#stay">
0273                         <DetectChar context="#pop" attribute="Symbol" char="&gt;" />
0274                         <IncludeRules context="DefaultTypeInsideTag" />
0275                 </context>
0276                 <context name="TypeInsideTag-CurlyBracket" attribute="Component Tag" lineEndContext="#stay">
0277                         <DetectChar context="#pop" attribute="Symbol" char="}" />
0278                         <IncludeRules context="DefaultTypeInsideTag" />
0279                 </context>
0280                 <context name="TypeInsideTag-SquareBracket" attribute="Component Tag" lineEndContext="#stay">
0281                         <DetectChar context="#pop" attribute="Symbol" char="]" />
0282                         <IncludeRules context="DefaultTypeInsideTag" />
0283                 </context>
0284                 <context name="TypeInsideTag-RoundBracket" attribute="Component Tag" lineEndContext="#stay">
0285                         <DetectChar context="#pop" attribute="Symbol" char=")" />
0286                         <IncludeRules context="DefaultTypeInsideTag" />
0287                 </context>
0288 
0289                 <!-- Inside the tag -->
0290                 <context name="ElementTag" attribute="Normal Text" lineEndContext="#stay">
0291                         <Detect2Chars context="#pop" attribute="Element Tag" char="/" char1="&gt;" endRegion="Element" />
0292                         <DetectChar context="#pop!ElementTagContent" attribute="Element Tag" char="&gt;" />
0293                         <IncludeRules context="DefaultTag" />
0294                 </context>
0295                 <context name="ComponentTag" attribute="Normal Text" lineEndContext="#stay">
0296                         <Detect2Chars context="#pop" attribute="Component Tag" char="/" char1="&gt;" endRegion="ComponentElement" />
0297                         <DetectChar context="#pop!ComponentTagContent" attribute="Component Tag" char="&gt;" />
0298                         <IncludeRules context="DefaultTag" />
0299                 </context>
0300                 <context name="DefaultTag" attribute="Normal Text" lineEndContext="#stay">
0301                         <RegExpr context="Attribute" attribute="Attribute" String="&nameWithBound;" />
0302                         <IncludeRules context="FindEvaluatedCode" />
0303                         <IncludeRules context="AllComments" />
0304                         <RegExpr context="#stay" attribute="Error" String="\S+&name;|\S" />
0305                 </context>
0306 
0307                 <!-- Tag content: <Tag> content </Tag> -->
0308                 <context name="ElementTagContent" attribute="Tag Content Text" lineEndContext="#stay">
0309                         <RegExpr context="#pop" attribute="Element Tag" String="&lt;/\s*&gt;" endRegion="Element" />
0310                         <!-- With component tag (error) -->
0311                         <RegExpr context="ElementTagEnd" attribute="Element Tag" String="&lt;/\s*(&simpleName;|(?=[A-Z_\$]))" />
0312                         <IncludeRules context="DefaultTagContent" />
0313                 </context>
0314                 <context name="ComponentTagContent" attribute="Tag Content Text" lineEndContext="#stay">
0315                         <RegExpr context="#pop" attribute="Component Tag" String="&lt;/\s*&gt;" endRegion="ComponentElement" />
0316                         <RegExpr context="ComponentTagEnd" attribute="Component Tag" String="&lt;/\s*&name;" />
0317                         <IncludeRules context="DefaultTagContent" />
0318                 </context>
0319                 <context name="DefaultTagContent" attribute="Tag Content Text" lineEndContext="#stay">
0320                         <IncludeRules context="FindTagsInTagContent" />
0321                         <IncludeRules context="FindEntityRefs" />
0322                         <IncludeRules context="FindEvaluatedCode" />
0323                         <DetectChar context="#stay" attribute="Error" char="&lt;" />
0324                 </context>
0325 
0326                 <context name="ElementTagEnd" attribute="Normal Text" lineEndContext="#stay">
0327                         <DetectChar context="#pop#pop" attribute="Element Tag" char="&gt;" endRegion="Element" />
0328                         <RegExpr context="#stay" attribute="Error" String="\S" />
0329                 </context>
0330                 <context name="ComponentTagEnd" attribute="Normal Text" lineEndContext="#stay">
0331                         <DetectChar context="#pop#pop" attribute="Component Tag" char="&gt;" endRegion="ComponentElement" />
0332                         <RegExpr context="#stay" attribute="Error" String="\S" />
0333                 </context>
0334 
0335                 <!-- Tag attribute -->
0336                 <context name="Attribute" attribute="Normal Text" lineEndContext="#stay">
0337                         <RegExpr context="#pop" attribute="Error" String="\=(?=\s*/?&gt;)" />
0338                         <DetectChar context="#pop!Value" attribute="Symbol" char="=" />
0339                         <IncludeRules context="FindEndTag" />
0340                         <DetectChar context="#pop" char="{" lookAhead="true" /> <!-- EvaluatedCode -->
0341                         <IncludeRules context="AllComments" />
0342                         <RegExpr context="#stay" attribute="Attribute" String="&nameWithBound;" />
0343                         <RegExpr context="#stay" attribute="Error" String="\S+&name;|\S" />
0344                 </context>
0345 
0346                 <context name="Value" attribute="Normal Text" lineEndContext="#stay">
0347                         <DetectChar context="#pop!ValueDQ" attribute="Value" char="&quot;" />
0348                         <DetectChar context="#pop!ValueSQ" attribute="Value" char="&apos;" />
0349                         <DetectChar context="#pop" char="{" lookAhead="true" /> <!-- EvaluatedCode -->
0350                         <IncludeRules context="FindEndTag" />
0351                         <IncludeRules context="AllComments" />
0352                         <RegExpr context="#stay" attribute="Error" String="\S" />
0353                 </context>
0354                 <context name="ValueDQ" attribute="Value" lineEndContext="#stay">
0355                         <DetectChar context="#pop" attribute="Value" char="&quot;" />
0356                         <IncludeRules context="FindEntityRefs" />
0357                 </context>
0358                 <context name="ValueSQ" attribute="Value" lineEndContext="#stay">
0359                         <DetectChar context="#pop" attribute="Value" char="&apos;" />
0360                         <IncludeRules context="FindEntityRefs" />
0361                 </context>
0362 
0363                 <context name="FindEndTag" attribute="Normal Text" lineEndContext="#stay">
0364                         <Detect2Chars context="#pop" char="/" char1="&gt;" lookAhead="true" />
0365                         <DetectChar context="#pop" char="&gt;" lookAhead="true" />
0366                 </context>
0367 
0368                 <context name="FindEvaluatedCode" attribute="Normal Text" lineEndContext="#stay">
0369                         <!-- Find tags and send to the "EvaluatedCode" context -->
0370                         <DetectChar context="EvaluatedCode-BeforeTag" attribute="Code Brackets" char="{" beginRegion="Code" />
0371                 </context>
0372                 <context name="EvaluatedCode" attribute="Normal Text" lineEndContext="#stay">
0373                         <DetectChar context="#pop" attribute="Code Brackets" char="}" endRegion="Code" />
0374                         <IncludeRules context="Normal" />
0375                 </context>
0376 
0377                 <context name="AllComments" attribute="Normal Text" lineEndContext="#stay">
0378                         <!-- TypeScript uses this for comments -->
0379                         <IncludeRules context="FindComments##JavaScript" />
0380                 </context>
0381 
0382         </contexts>
0383 
0384         <itemDatas>
0385                 <itemData name="Normal Text"      defStyleNum="dsNormal" spellChecking="false" />
0386                 <itemData name="Comment"          defStyleNum="dsComment" />
0387 
0388                 <itemData name="Tag Content Text" defStyleNum="dsNormal" />
0389                 <itemData name="Element Tag"      defStyleNum="dsKeyword" spellChecking="false" />
0390                 <itemData name="Component Tag"    defStyleNum="dsFunction" bold="1" spellChecking="false" />
0391                 <itemData name="Attribute"        defStyleNum="dsOthers" spellChecking="false" />
0392                 <itemData name="Value"            defStyleNum="dsString" spellChecking="false" />
0393                 <itemData name="EntityRef"        defStyleNum="dsDecVal" spellChecking="false" />
0394                 <itemData name="Code Brackets"    defStyleNum="dsVariable" spellChecking="false" />
0395                 <itemData name="Error"            defStyleNum="dsError" spellChecking="false" />
0396 
0397                 <!-- itemDatas in JavaScript XML file -->
0398                 <itemData name="Symbol"           defStyleNum="dsOperator" />
0399                 <itemData name="ControlFlow"      defStyleNum="dsControlFlow" spellChecking="false" />
0400                 <itemData name="Keyword"          defStyleNum="dsKeyword" spellChecking="false" />
0401                 <itemData name="Reserved"         defStyleNum="dsKeyword" italic="true" spellChecking="false" />
0402                 <itemData name="Module"           defStyleNum="dsImport" spellChecking="false" />
0403                 <itemData name="Template"         defStyleNum="dsVerbatimString" />
0404                 <itemData name="Substitution"     defStyleNum="dsSpecialChar" spellChecking="false" />
0405                 <itemData name="Special Operators" defStyleNum="dsKeyword" spellChecking="false" />
0406         </itemDatas>
0407 
0408 </highlighting>
0409 
0410 <general>
0411         <keywords casesensitive="1" />
0412         <comments>
0413                 <comment name="singleLine" start="//" />
0414                 <comment name="multiLine" start="/*" end="*/" />
0415         </comments>
0416 </general>
0417 
0418 </language>
0419 <!-- kate: replace-tabs off; tab-width 3; indent-width 3; remove-trailing-spaces mod; dynamic-word-wrap off; -->