summaryrefslogtreecommitdiffhomepage
path: root/helpers
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <[email protected]>2018-04-02 08:49:54 +0200
committerBjørn Erik Pedersen <[email protected]>2018-04-02 08:50:42 +0200
commit2c54f1ad48fe2a2f7504117d351d45abc89dcb1f (patch)
tree1b3ed635cb8b65debf6170d23ea91d7d32d457fc /helpers
parenteb15ac37ef6668e298c0c4d8062726cd545da576 (diff)
downloadhugo-2c54f1ad48fe2a2f7504117d351d45abc89dcb1f.tar.gz
hugo-2c54f1ad48fe2a2f7504117d351d45abc89dcb1f.zip
docshelper: List Chroma lexers
Fixes #4554
Diffstat (limited to 'helpers')
-rw-r--r--helpers/docshelper.go60
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)
+}