8000 Add lexers.Aliases() method to display only lexers' aliases (#1057) · alecthomas/chroma@62197e9 · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Commit 62197e9

Browse files
authored
Add lexers.Aliases() method to display only lexers' aliases (#1057)
`lexers.Aliases()` method shows all the aliases for all the available lexers, or their name if none are found. Using a flag, lexers without aliases can be skipped entirely. This request addresses #1048. Signed-off-by: LuBashQ <cristian.lupascu.nicolae@gmail.com>
1 parent 7feb358 commit 62197e9

File tree

3 files changed

+37
-0
lines changed

3 files changed

+37
-0
lines changed

lexers/lexers.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,12 @@ func Names(withAliases bool) []string {
2929
return GlobalLexerRegistry.Names(withAliases)
3030
}
3131

32+
// Aliases of all the lexers, and skip those lexers who do not have any aliases,
33+
// or show their name instead
34+
func Aliases(skipWithoutAliases bool) []string {
35+
return GlobalLexerRegistry.Aliases(skipWithoutAliases)
36+
}
37+
3238
// Get a Lexer by name, alias or file extension.
3339
//
3440
// Note that this if there isn't an exact match on name or alias, this will

lexers/lexers_test.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,19 @@ func TestGet(t *testing.T) {
4444
})
4545
}
4646

47+
func TestAliases(t *testing.T) {
48+
t.Run("UseNameIfNoAliases", func(t *testing.T) {
49+
expected := lexers.GlobalLexerRegistry.Aliases(false)
50+
actual := lexers.Aliases(false)
51+
assert.Equal(t, expected, actual)
52+
})
53+
t.Run("SkipIfNoAliases", func(t *testing.T) {
54+
expected := lexers.GlobalLexerRegistry.Aliases(true)
55+
actual := lexers.Aliases(true)
56+
assert.Equal(t, expected, actual)
57+
})
58+
}
59+
4760
func TestGlobs(t *testing.T) {
4861
filename := "main.go"
4962
for _, lexer := range lexers.GlobalLexerRegistry.Lexers {

registry.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,24 @@ func (l *LexerRegistry) Names(withAliases bool) []string {
4848
return out
4949
}
5050

51+
// Aliases of all the lexers, and skip those lexers who do not have any aliases,
52+
// or show their name instead
53+
func (l *LexerRegistry) Aliases(skipWithoutAliases bool) []string {
54+
out := []string{}
55+
for _, lexer := range l.Lexers {
56+
config := lexer.Config()
57+
if len(config.Aliases) == 0 {
58+
if skipWithoutAliases {
59+
continue
60+
}
61+
out = append(out, config.Name)
62+
}
63+
out = append(out, config.Aliases...)
64+
}
65+
sort.Strings(out)
66+
return out
67+
}
68+
5169
// Get a Lexer by name, alias or file extension.
5270
func (l *LexerRegistry) Get(name string) Lexer {
5371
if lexer := l.byName[name]; lexer != nil {

0 commit comments

Comments
 (0)
0