source: code/trunk/vendor/github.com/alecthomas/chroma/v2/lexers/lexers.go@ 67

Last change on this file since 67 was 67, checked in by Izuru Yakumo, 23 months ago

Use vendored modules

Signed-off-by: Izuru Yakumo <yakumo.izuru@…>

File size: 1.7 KB
Line 
1package lexers
2
3import (
4 "embed"
5 "io/fs"
6
7 "github.com/alecthomas/chroma/v2"
8)
9
10//go:embed embedded
11var embedded embed.FS
12
13// GlobalLexerRegistry is the global LexerRegistry of Lexers.
14var 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.
28func Names(withAliases bool) []string {
29 return GlobalLexerRegistry.Names(withAliases)
30}
31
32// Get a Lexer by name, alias or file extension.
33func Get(name string) chroma.Lexer {
34 return GlobalLexerRegistry.Get(name)
35}
36
37// MatchMimeType attempts to find a lexer for the given MIME type.
38func MatchMimeType(mimeType string) chroma.Lexer {
39 return GlobalLexerRegistry.MatchMimeType(mimeType)
40}
41
42// Match returns the first lexer matching filename.
43func Match(filename string) chroma.Lexer {
44 return GlobalLexerRegistry.Match(filename)
45}
46
47// Register a Lexer with the global registry.
48func Register(lexer chroma.Lexer) chroma.Lexer {
49 return GlobalLexerRegistry.Register(lexer)
50}
51
52// Analyse text content and return the "best" lexer..
53func 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.
59func 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.
69var Fallback chroma.Lexer = chroma.MustNewLexer(&chroma.Config{
70 Name: "fallback",
71 Filenames: []string{"*"},
72 Priority: -1,
73}, PlaintextRules)
Note: See TracBrowser for help on using the repository browser.