annotate vendor/github.com/alecthomas/chroma/v2/lexers/svelte.go @ 66:787b5ee0289d draft

Use vendored modules Signed-off-by: Izuru Yakumo <yakumo.izuru@chaotic.ninja>
author yakumo.izuru
date Sun, 23 Jul 2023 13:18:53 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
66
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
1 package lexers
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
2
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
3 import (
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
4 . "github.com/alecthomas/chroma/v2" // nolint
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
5 )
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
6
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
7 // Svelte lexer.
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
8 var Svelte = Register(DelegatingLexer(HTML, MustNewLexer(
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
9 &Config{
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
10 Name: "Svelte",
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
11 Aliases: []string{"svelte"},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
12 Filenames: []string{"*.svelte"},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
13 MimeTypes: []string{"application/x-svelte"},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
14 DotAll: true,
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
15 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
16 svelteRules,
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
17 )))
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
18
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
19 func svelteRules() Rules {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
20 return Rules{
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
21 "root": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
22 // Let HTML handle the comments, including comments containing script and style tags
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
23 {`<!--`, Other, Push("comment")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
24 {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
25 // Highlight script and style tags based on lang attribute
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
26 // and allow attributes besides lang
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
27 `(<\s*(?:script|style).*?lang\s*=\s*['"])` +
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
28 `(.+?)(['"].*?>)` +
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
29 `(.+?)` +
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
30 `(<\s*/\s*(?:script|style)\s*>)`,
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
31 UsingByGroup(2, 4, Other, Other, Other, Other, Other),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
32 nil,
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
33 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
34 {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
35 // Make sure `{` is not inside script or style tags
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
36 `(?<!<\s*(?:script|style)(?:(?!(?:script|style)\s*>).)*?)` +
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
37 `{` +
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
38 `(?!(?:(?!<\s*(?:script|style)).)*?(?:script|style)\s*>)`,
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
39 Punctuation,
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
40 Push("templates"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
41 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
42 // on:submit|preventDefault
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
43 {`(?<=\s+on:\w+(?:\|\w+)*)\|(?=\w+)`, Operator, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
44 {`.+?`, Other, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
45 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
46 "comment": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
47 {`-->`, Other, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
48 {`.+?`, Other, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
49 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
50 "templates": {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
51 {`}`, Punctuation, Pop(1)},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
52 // Let TypeScript handle strings and the curly braces inside them
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
53 {`(?<!(?<!\\)\\)(['"` + "`])" + `.*?(?<!(?<!\\)\\)\1`, Using("TypeScript"), nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
54 // If there is another opening curly brace push to templates again
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
55 {"{", Punctuation, Push("templates")},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
56 {`@(debug|html)\b`, Keyword, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
57 {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
58 `(#await)(\s+)(\w+)(\s+)(then|catch)(\s+)(\w+)`,
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
59 ByGroups(Keyword, Text, Using("TypeScript"), Text,
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
60 Keyword, Text, Using("TypeScript"),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
61 ),
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
62 nil,
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
63 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
64 {`(#|/)(await|each|if|key)\b`, Keyword, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
65 {`(:else)(\s+)(if)?\b`, ByGroups(Keyword, Text, Keyword), nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
66 {`:(catch|then)\b`, Keyword, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
67 {`[^{}]+`, Using("TypeScript"), nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
68 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
69 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
70 }