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