diff options
author | Bjørn Erik Pedersen <[email protected]> | 2018-04-02 08:49:54 +0200 |
---|---|---|
committer | Bjørn Erik Pedersen <[email protected]> | 2018-04-02 08:50:42 +0200 |
commit | 2c54f1ad48fe2a2f7504117d351d45abc89dcb1f (patch) | |
tree | 1b3ed635cb8b65debf6170d23ea91d7d32d457fc /helpers | |
parent | eb15ac37ef6668e298c0c4d8062726cd545da576 (diff) | |
download | hugo-2c54f1ad48fe2a2f7504117d351d45abc89dcb1f.tar.gz hugo-2c54f1ad48fe2a2f7504117d351d45abc89dcb1f.zip |
docshelper: List Chroma lexers
Fixes #4554
Diffstat (limited to 'helpers')
-rw-r--r-- | helpers/docshelper.go | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/helpers/docshelper.go b/helpers/docshelper.go new file mode 100644 index 000000000..742b7bcf0 --- /dev/null +++ b/helpers/docshelper.go @@ -0,0 +1,60 @@ +package helpers + +import ( + "fmt" + "path/filepath" + "sort" + "strings" + + "github.com/alecthomas/chroma/lexers" + "github.com/gohugoio/hugo/docshelper" +) + +// This is is just some helpers used to create some JSON used in the Hugo docs. +func init() { + + docsProvider := func() map[string]interface{} { + docs := make(map[string]interface{}) + + var chromaLexers []interface{} + + sort.Sort(lexers.Registry.Lexers) + + for _, l := range lexers.Registry.Lexers { + + config := l.Config() + + var filenames []string + filenames = append(filenames, config.Filenames...) + filenames = append(filenames, config.AliasFilenames...) + + aliases := config.Aliases + + for _, filename := range filenames { + alias := strings.TrimSpace(strings.TrimPrefix(filepath.Ext(filename), ".")) + if alias != "" { + aliases = append(aliases, alias) + } + } + + sort.Strings(aliases) + aliases = UniqueStrings(aliases) + + lexerEntry := struct { + Name string + Aliases []string + }{ + config.Name, + aliases, + } + + chromaLexers = append(chromaLexers, lexerEntry) + + docs["lexers"] = chromaLexers + } + return docs + + } + + docshelper.AddDocProvider("chroma", docsProvider) +} |