annotate vendor/github.com/alecthomas/chroma/v2/lexers/lexers.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 "embed"
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
5 "io/fs"
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
6
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
7 "github.com/alecthomas/chroma/v2"
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
8 )
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
9
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
10 //go:embed embedded
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
11 var embedded embed.FS
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
12
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
13 // GlobalLexerRegistry is the global LexerRegistry of Lexers.
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
14 var GlobalLexerRegistry = func() *chroma.LexerRegistry {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
15 reg := chroma.NewLexerRegistry()
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
16 // index(reg)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
17 paths, err := fs.Glob(embedded, "embedded/*.xml")
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
18 if err != nil {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
19 panic(err)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
20 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
21 for _, path := range paths {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
22 reg.Register(chroma.MustNewXMLLexer(embedded, path))
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
23 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
24 return reg
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
25 }()
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
26
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
27 // Names of all lexers, optionally including aliases.
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
28 func Names(withAliases bool) []string {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
29 return GlobalLexerRegistry.Names(withAliases)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
30 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
31
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
32 // Get a Lexer by name, alias or file extension.
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
33 func Get(name string) chroma.Lexer {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
34 return GlobalLexerRegistry.Get(name)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
35 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
36
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
37 // MatchMimeType attempts to find a lexer for the given MIME type.
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
38 func MatchMimeType(mimeType string) chroma.Lexer {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
39 return GlobalLexerRegistry.MatchMimeType(mimeType)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
40 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
41
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
42 // Match returns the first lexer matching filename.
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
43 func Match(filename string) chroma.Lexer {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
44 return GlobalLexerRegistry.Match(filename)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
45 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
46
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
47 // Register a Lexer with the global registry.
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
48 func Register(lexer chroma.Lexer) chroma.Lexer {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
49 return GlobalLexerRegistry.Register(lexer)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
50 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
51
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
52 // Analyse text content and return the "best" lexer..
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
53 func Analyse(text string) chroma.Lexer {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
54 return GlobalLexerRegistry.Analyse(text)
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
55 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
56
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
57 // PlaintextRules is used for the fallback lexer as well as the explicit
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
58 // plaintext lexer.
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
59 func PlaintextRules() chroma.Rules {
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
60 return chroma.Rules{
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
61 "root": []chroma.Rule{
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
62 {`.+`, chroma.Text, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
63 {`\n`, chroma.Text, nil},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
64 },
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
65 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
66 }
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
67
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
68 // Fallback lexer if no other is found.
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
69 var Fallback chroma.Lexer = chroma.MustNewLexer(&chroma.Config{
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
70 Name: "fallback",
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
71 Filenames: []string{"*"},
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
72 Priority: -1,
787b5ee0289d Use vendored modules
yakumo.izuru
parents:
diff changeset
73 }, PlaintextRules)