mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-10-26 13:07:49 -04:00
316 lines
9.6 KiB
XML
316 lines
9.6 KiB
XML
<lexer>
|
|
<config>
|
|
<name>Templ</name>
|
|
<alias>templ</alias>
|
|
<filename>*.templ</filename>
|
|
<mime_type>text/x-templ</mime_type>
|
|
<dot_all>true</dot_all>
|
|
<analyse>
|
|
<regex pattern="(?m)^\s*templ\s+[A-Za-z_]\w*\s*\(" score="0.7"/>
|
|
<regex pattern="(?m)^\s*package\s+\w+[\s\S]*^\s*templ\s+" score="0.5"/>
|
|
</analyse>
|
|
</config>
|
|
<rules>
|
|
<state name="root">
|
|
<rule pattern="//[^\n\r]*">
|
|
<token type="CommentSingle"/>
|
|
</rule>
|
|
<rule pattern="/\*(?:.|\n)*?\*/">
|
|
<token type="CommentMultiline"/>
|
|
</rule>
|
|
<rule pattern="(?m)^(\s*)(package|import|const|type|func)([^\n]*)">
|
|
<bygroups>
|
|
<token type="TextWhitespace"/>
|
|
<using lexer="Go"/>
|
|
<using lexer="Go"/>
|
|
</bygroups>
|
|
</rule>
|
|
<rule pattern="\b(templ|css|script)(\s+)([A-Za-z_]\w*)(\s*)(\([^{}]*\))(\s*)({)">
|
|
<bygroups>
|
|
<token type="KeywordDeclaration"/>
|
|
<token type="TextWhitespace"/>
|
|
<token type="NameFunction"/>
|
|
<token type="TextWhitespace"/>
|
|
<using lexer="Go"/>
|
|
<token type="TextWhitespace"/>
|
|
<token type="Punctuation"/>
|
|
</bygroups>
|
|
</rule>
|
|
<rule pattern="@[A-Za-z_]\w*(?:\.[A-Za-z_]\w*)*(?:\([^{}()\r\n]*(?:\([^{}()\r\n]*\)[^{}()\r\n]*)*\))?(?:[ \t]*{)?">
|
|
<token type="NameFunction"/>
|
|
</rule>
|
|
<rule pattern="(?m)^(\s*)(if|for|switch|select)(\s+)([^{}\n]*)(\s*)({)">
|
|
<bygroups>
|
|
<token type="TextWhitespace"/>
|
|
<token type="Keyword"/>
|
|
<token type="TextWhitespace"/>
|
|
<using lexer="Go"/>
|
|
<token type="TextWhitespace"/>
|
|
<token type="Punctuation"/>
|
|
</bygroups>
|
|
</rule>
|
|
<rule pattern="(?m)^(\s*)(else)(\s*)(if)?(\s*)([^{}\n]*)(\s*)({)?">
|
|
<bygroups>
|
|
<token type="TextWhitespace"/>
|
|
<token type="Keyword"/>
|
|
<token type="TextWhitespace"/>
|
|
<token type="Keyword"/>
|
|
<token type="TextWhitespace"/>
|
|
<using lexer="Go"/>
|
|
<token type="TextWhitespace"/>
|
|
<token type="Punctuation"/>
|
|
</bygroups>
|
|
</rule>
|
|
<rule pattern="(})(\s*)(else)(\s*)(if)?(\s*)([^{}\n]*)(\s*)({)?">
|
|
<bygroups>
|
|
<token type="Punctuation"/>
|
|
<token type="TextWhitespace"/>
|
|
<token type="Keyword"/>
|
|
<token type="TextWhitespace"/>
|
|
<token type="Keyword"/>
|
|
<token type="TextWhitespace"/>
|
|
<using lexer="Go"/>
|
|
<token type="TextWhitespace"/>
|
|
<token type="Punctuation"/>
|
|
</bygroups>
|
|
</rule>
|
|
<rule pattern="({)([^{}\n]*)(})">
|
|
<bygroups>
|
|
<token type="Punctuation"/>
|
|
<using lexer="Go"/>
|
|
<token type="Punctuation"/>
|
|
</bygroups>
|
|
</rule>
|
|
<rule pattern="}">
|
|
<token type="Punctuation"/>
|
|
</rule>
|
|
<rule pattern="`(?:.|\n)*?`">
|
|
<token type="LiteralStringBacktick"/>
|
|
</rule>
|
|
<rule pattern="\s+">
|
|
<token type="TextWhitespace"/>
|
|
</rule>
|
|
<rule pattern="[^<&@{}`\s]+">
|
|
<token type="Text"/>
|
|
</rule>
|
|
<rule pattern="&\S*?;">
|
|
<token type="NameEntity"/>
|
|
</rule>
|
|
<rule pattern="\<\!\[CDATA\[.*?\]\]\>">
|
|
<token type="CommentPreproc"/>
|
|
</rule>
|
|
<rule pattern="<!--">
|
|
<token type="Comment"/>
|
|
<push state="comment"/>
|
|
</rule>
|
|
<rule pattern="<\?.*?\?>">
|
|
<token type="CommentPreproc"/>
|
|
</rule>
|
|
<rule pattern="<![^>]*>">
|
|
<token type="CommentPreproc"/>
|
|
</rule>
|
|
<rule pattern="(<)(script)(\s*)">
|
|
<bygroups>
|
|
<token type="Punctuation"/>
|
|
<token type="NameTag"/>
|
|
<token type="Text"/>
|
|
</bygroups>
|
|
<push state="script-content" state="tag"/>
|
|
</rule>
|
|
<rule pattern="(<)(style)(\s*)">
|
|
<bygroups>
|
|
<token type="Punctuation"/>
|
|
<token type="NameTag"/>
|
|
<token type="Text"/>
|
|
</bygroups>
|
|
<push state="style-content" state="tag"/>
|
|
</rule>
|
|
<rule pattern="(<)([A-Za-z][\w:.-]*)">
|
|
<bygroups>
|
|
<token type="Punctuation"/>
|
|
<token type="NameTag"/>
|
|
</bygroups>
|
|
<push state="tag"/>
|
|
</rule>
|
|
<rule pattern="(</)([A-Za-z][\w:.-]*)(\s*)(>)">
|
|
<bygroups>
|
|
<token type="Punctuation"/>
|
|
<token type="NameTag"/>
|
|
<token type="Text"/>
|
|
<token type="Punctuation"/>
|
|
</bygroups>
|
|
</rule>
|
|
<rule pattern="[@{}<&]">
|
|
<token type="Punctuation"/>
|
|
</rule>
|
|
</state>
|
|
<state name="script-content">
|
|
<rule pattern="(<)(\s*)(/)(\s*)(script)(\s*)(>)">
|
|
<bygroups>
|
|
<token type="Punctuation"/>
|
|
<token type="Text"/>
|
|
<token type="Punctuation"/>
|
|
<token type="Text"/>
|
|
<token type="NameTag"/>
|
|
<token type="Text"/>
|
|
<token type="Punctuation"/>
|
|
</bygroups>
|
|
<pop depth="1"/>
|
|
</rule>
|
|
<rule pattern="\s*[^\r\n]*\{\{.*?\}\}[^\r\n]*">
|
|
<token type="Other"/>
|
|
</rule>
|
|
<rule pattern=".+?(?=<\s*/\s*script\s*>)">
|
|
<token type="Other"/>
|
|
</rule>
|
|
</state>
|
|
<state name="style-content">
|
|
<rule pattern="(<)(\s*)(/)(\s*)(style)(\s*)(>)">
|
|
<bygroups>
|
|
<token type="Punctuation"/>
|
|
<token type="Text"/>
|
|
<token type="Punctuation"/>
|
|
<token type="Text"/>
|
|
<token type="NameTag"/>
|
|
<token type="Text"/>
|
|
<token type="Punctuation"/>
|
|
</bygroups>
|
|
<pop depth="1"/>
|
|
</rule>
|
|
<rule pattern=".+?(?=<\s*/\s*style\s*>)">
|
|
<using lexer="CSS"/>
|
|
</rule>
|
|
</state>
|
|
<state name="comment">
|
|
<rule pattern="[^-]+">
|
|
<token type="Comment"/>
|
|
</rule>
|
|
<rule pattern="-->">
|
|
<token type="Comment"/>
|
|
<pop depth="1"/>
|
|
</rule>
|
|
<rule pattern="-">
|
|
<token type="Comment"/>
|
|
</rule>
|
|
</state>
|
|
<state name="tag">
|
|
<rule pattern="\s+">
|
|
<token type="Text"/>
|
|
</rule>
|
|
<rule pattern="//[^\n\r]*">
|
|
<token type="CommentSingle"/>
|
|
</rule>
|
|
<rule pattern="/\*(?:.|\n)*?\*/">
|
|
<token type="CommentMultiline"/>
|
|
</rule>
|
|
<rule pattern="\b(if|for|switch|select)(\s+)([^{}]*)(\s*)({)">
|
|
<bygroups>
|
|
<token type="Keyword"/>
|
|
<token type="Text"/>
|
|
<using lexer="Go"/>
|
|
<token type="Text"/>
|
|
<token type="Punctuation"/>
|
|
</bygroups>
|
|
</rule>
|
|
<rule pattern="\b(else)(\s*)(if)?(\s*)([^{}]*)(\s*)({)?">
|
|
<bygroups>
|
|
<token type="Keyword"/>
|
|
<token type="Text"/>
|
|
<token type="Keyword"/>
|
|
<token type="Text"/>
|
|
<using lexer="Go"/>
|
|
<token type="Text"/>
|
|
<token type="Punctuation"/>
|
|
</bygroups>
|
|
</rule>
|
|
<rule pattern="}">
|
|
<token type="Punctuation"/>
|
|
</rule>
|
|
<rule pattern="({)([^{}]*)(})(\??)(\s*)(=)(\s*)({)([^{}]*)(})">
|
|
<bygroups>
|
|
<token type="Punctuation"/>
|
|
<using lexer="Go"/>
|
|
<token type="Punctuation"/>
|
|
<token type="Operator"/>
|
|
<token type="Text"/>
|
|
<token type="Operator"/>
|
|
<token type="Text"/>
|
|
<token type="Punctuation"/>
|
|
<using lexer="Go"/>
|
|
<token type="Punctuation"/>
|
|
</bygroups>
|
|
</rule>
|
|
<rule pattern="({)([^{}]*)(})(\??)(\s*)(=)(\s*)">
|
|
<bygroups>
|
|
<token type="Punctuation"/>
|
|
<using lexer="Go"/>
|
|
<token type="Punctuation"/>
|
|
<token type="Operator"/>
|
|
<token type="Text"/>
|
|
<token type="Operator"/>
|
|
<token type="Text"/>
|
|
</bygroups>
|
|
<push state="attr"/>
|
|
</rule>
|
|
<rule pattern="({)([^{}]*)(})(\??)">
|
|
<bygroups>
|
|
<token type="Punctuation"/>
|
|
<using lexer="Go"/>
|
|
<token type="Punctuation"/>
|
|
<token type="Operator"/>
|
|
</bygroups>
|
|
</rule>
|
|
<rule pattern="({)([^{}]*)(})">
|
|
<bygroups>
|
|
<token type="Punctuation"/>
|
|
<using lexer="Go"/>
|
|
<token type="Punctuation"/>
|
|
</bygroups>
|
|
</rule>
|
|
<rule pattern="((?:[@#.][\w:.*-]+|\[[^\]\s=]+\]|[\w:.*-]+\??)\s*)(=)(\s*)({)([^{}]*)(})">
|
|
<bygroups>
|
|
<token type="NameAttribute"/>
|
|
<token type="Operator"/>
|
|
<token type="Text"/>
|
|
<token type="Punctuation"/>
|
|
<using lexer="Go"/>
|
|
<token type="Punctuation"/>
|
|
</bygroups>
|
|
</rule>
|
|
<rule pattern="((?:[@#.][\w:.*-]+|\[[^\]\s=]+\]|[\w:.*-]+\??)\s*)(=)(\s*)">
|
|
<bygroups>
|
|
<token type="NameAttribute"/>
|
|
<token type="Operator"/>
|
|
<token type="Text"/>
|
|
</bygroups>
|
|
<push state="attr"/>
|
|
</rule>
|
|
<rule pattern="(?:[@#.][\w:.*-]+|\[[^\]\s=]+\]|[\w:.*-]+\??)">
|
|
<token type="NameAttribute"/>
|
|
</rule>
|
|
<rule pattern="(/?)(\s*)(>)">
|
|
<bygroups>
|
|
<token type="Punctuation"/>
|
|
<token type="Text"/>
|
|
<token type="Punctuation"/>
|
|
</bygroups>
|
|
<pop depth="1"/>
|
|
</rule>
|
|
</state>
|
|
<state name="attr">
|
|
<rule pattern="".*?"">
|
|
<token type="LiteralString"/>
|
|
<pop depth="1"/>
|
|
</rule>
|
|
<rule pattern="'.*?'">
|
|
<token type="LiteralString"/>
|
|
<pop depth="1"/>
|
|
</rule>
|
|
<rule pattern="[^\s>]+">
|
|
<token type="LiteralString"/>
|
|
<pop depth="1"/>
|
|
</rule>
|
|
</state>
|
|
</rules>
|
|
</lexer>
|