From 2c54f1ad48fe2a2f7504117d351d45abc89dcb1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Mon, 2 Apr 2018 08:49:54 +0200 Subject: [PATCH] docshelper: List Chroma lexers Fixes #4554 --- helpers/docshelper.go | 60 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 helpers/docshelper.go 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) +}