1package helpers 2 3import ( 4 "path/filepath" 5 "sort" 6 "strings" 7 8 "github.com/alecthomas/chroma/lexers" 9 "github.com/gohugoio/hugo/docshelper" 10) 11 12// This is is just some helpers used to create some JSON used in the Hugo docs. 13func init() { 14 docsProvider := func() docshelper.DocProvider { 15 var chromaLexers []interface{} 16 17 sort.Sort(lexers.Registry.Lexers) 18 19 for _, l := range lexers.Registry.Lexers { 20 21 config := l.Config() 22 23 var filenames []string 24 filenames = append(filenames, config.Filenames...) 25 filenames = append(filenames, config.AliasFilenames...) 26 27 aliases := config.Aliases 28 29 for _, filename := range filenames { 30 alias := strings.TrimSpace(strings.TrimPrefix(filepath.Ext(filename), ".")) 31 if alias != "" { 32 aliases = append(aliases, alias) 33 } 34 } 35 36 aliases = UniqueStringsSorted(aliases) 37 38 lexerEntry := struct { 39 Name string 40 Aliases []string 41 }{ 42 config.Name, 43 aliases, 44 } 45 46 chromaLexers = append(chromaLexers, lexerEntry) 47 48 } 49 50 return docshelper.DocProvider{"chroma": map[string]interface{}{"lexers": chromaLexers}} 51 } 52 53 docshelper.AddDocProviderFunc(docsProvider) 54} 55